first commit with existing project files

This commit is contained in:
Vincent Guillet
2025-05-15 12:02:44 +02:00
parent ff55029ce2
commit 8fd72d599d
10 changed files with 39 additions and 29 deletions

View File

@@ -14,7 +14,7 @@ services:
- mysql_data:/var/lib/mysql - mysql_data:/var/lib/mysql
app: app:
build: ./hibernate-projet build: ./hibernate-project
container_name: app container_name: app
depends_on: depends_on:
- mysql - mysql

View File

@@ -1,16 +1,19 @@
FROM maven:3.9.6-eclipse-temurin-17 AS build FROM maven:3.9.6-eclipse-temurin-21 AS build
WORKDIR /app WORKDIR /app
COPY pom.xml . COPY pom.xml .
RUN mvn dependency:go-offline -B RUN mvn dependency:go-offline -B
COPY src ./src COPY src ./src
RUN mvn package -DskipTests
FROM eclipse-temurin:17-jre-alpine RUN mvn clean package -DskipTests
FROM eclipse-temurin:21-jre-alpine
WORKDIR /app WORKDIR /app
COPY --from=build /app/target/hibernate-projet-1.0-SNAPSHOT.jar app.jar
COPY --from=build /app/target/hibernate-project-1.0-SNAPSHOT.jar app.jar
ENTRYPOINT [ "java", "-jar", "app.jar" ] ENTRYPOINT [ "java", "-jar", "app.jar" ]
# java -jar app.jar

View File

@@ -87,7 +87,7 @@
<transformers> <transformers>
<transformer <transformer
implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>com.exemple.App</mainClass> <mainClass>com.humanbooster.App</mainClass>
</transformer> </transformer>
</transformers> </transformers>
</configuration> </configuration>
@@ -122,7 +122,7 @@
<archive> <archive>
<manifest> <manifest>
<addClasspath>true</addClasspath> <addClasspath>true</addClasspath>
<mainClass>com.exemple.App</mainClass> <mainClass>com.humanbooster.App</mainClass>
</manifest> </manifest>
</archive> </archive>
</configuration> </configuration>

View File

@@ -24,9 +24,11 @@ public class App {
SessionFactory sessionFactory = metadata.buildSessionFactory(); SessionFactory sessionFactory = metadata.buildSessionFactory();
System.out.println("Connexion réussie !"); System.out.println("Connexion réussie !");
User user = new User("Bob", "bob@example.com", List.of( User user = new User("Bob", "bob@example.com", null);
new Article("Article 1", "Contenu de l'article 1", null),
new Article("Article 2", "Contenu de l'article 2", null) user.setArticles(List.of(
new Article("Article 1", "Contenu de l'article 1", user),
new Article("Article 2", "Contenu de l'article 2", user)
)); ));
UserService userService = new UserService(new UserDao(sessionFactory)); UserService userService = new UserService(new UserDao(sessionFactory));

View File

@@ -4,10 +4,10 @@ import com.humanbooster.model.Article;
import org.hibernate.Session; import org.hibernate.Session;
import org.hibernate.SessionFactory; import org.hibernate.SessionFactory;
public class ArticleDto extends GenericDaoImpl<Article,Long> { public class ArticleDao extends GenericDaoImpl<Article,Long> {
public ArticleDto(SessionFactory sessionFactory, Class<Article> entityClass) { public ArticleDao(SessionFactory sessionFactory) {
super(sessionFactory, entityClass); super(sessionFactory, Article.class);
} }
public Article findByAuthor(String author) { public Article findByAuthor(String author) {

View File

@@ -7,7 +7,7 @@ import java.util.List;
public abstract class GenericDaoImpl<T, ID> implements GenericDao<T, ID> { public abstract class GenericDaoImpl<T, ID> implements GenericDao<T, ID> {
private final Class<T> entityClass; protected final Class<T> entityClass;
protected SessionFactory sessionFactory; protected SessionFactory sessionFactory;
public GenericDaoImpl(SessionFactory sessionFactory, Class<T> entityClass) { public GenericDaoImpl(SessionFactory sessionFactory, Class<T> entityClass) {

View File

@@ -7,7 +7,7 @@ import org.hibernate.SessionFactory;
public class UserDao extends GenericDaoImpl<User,Long> { public class UserDao extends GenericDaoImpl<User,Long> {
public UserDao(SessionFactory sessionFactory) { public UserDao(SessionFactory sessionFactory) {
super(sessionFactory, entityClass); super(sessionFactory, User.class);
} }
public User findByEmail(String email) { public User findByEmail(String email) {

View File

@@ -1,6 +1,7 @@
package com.humanbooster.model; package com.humanbooster.model;
import jakarta.persistence.*; import jakarta.persistence.*;
import org.jetbrains.annotations.NotNull;
@Entity @Entity
public class Article { public class Article {
@@ -19,7 +20,9 @@ public class Article {
@JoinColumn(name="author_id", nullable=false) @JoinColumn(name="author_id", nullable=false)
private User author; private User author;
public Article (String titre, String content, User author){ public Article() {}
public Article (String title, String content, User author){
this.title = title; this.title = title;
this.content = content; this.content = content;
this.author = author; this.author = author;

View File

@@ -17,6 +17,8 @@ public class User {
@OneToMany(mappedBy="author", cascade= CascadeType.ALL, fetch = FetchType.LAZY) @OneToMany(mappedBy="author", cascade= CascadeType.ALL, fetch = FetchType.LAZY)
private List<Article> articles; private List<Article> articles;
public User() {}
public User(String name, String email, List<Article> articles) { public User(String name, String email, List<Article> articles) {
this.name = name; this.name = name;
this.email = email; this.email = email;

View File

@@ -1,43 +1,43 @@
package com.humanbooster.service; package com.humanbooster.service;
import com.humanbooster.dao.ArticleDto; import com.humanbooster.dao.ArticleDao;
import com.humanbooster.model.Article; import com.humanbooster.model.Article;
import java.util.List; import java.util.List;
public class ArticleService { public class ArticleService {
public final ArticleDto articleDto; public final ArticleDao articleDao;
public ArticleService(ArticleDto articleDto) { public ArticleService(ArticleDao articleDao) {
this.articleDto = articleDto; this.articleDao = articleDao;
} }
public void createArticle(Article article) { public void createArticle(Article article) {
articleDto.create(article); articleDao.create(article);
} }
public void getArticleById(Long id) { public void getArticleById(Long id) {
articleDto.read(id); articleDao.read(id);
} }
public void updateArticle(Article article) { public void updateArticle(Article article) {
articleDto.update(article); articleDao.update(article);
} }
public void deleteArticle(Long id) { public void deleteArticle(Long id) {
articleDto.delete(id); articleDao.delete(id);
} }
public List<Article> getAllArticles() { public List<Article> getAllArticles() {
return articleDto.findAll(); return articleDao.findAll();
} }
public Article findArticleByAuthor(String author) { public Article findArticleByAuthor(String author) {
return articleDto.findByAuthor(author); return articleDao.findByAuthor(author);
} }
public Article findArticleByTitle(String title) { public Article findArticleByTitle(String title) {
return articleDto.findByTitle(title); return articleDao.findByTitle(title);
} }
} }