JPA

🍀spring/스프링 jpa

[Spring JPA] 엔티티 매핑

안녕하세요. 오늘은 jpa를 사용하여 엔티티와 테이블을 매핑하기 위한 어노테이션에 대해 알아보려합니다. 김영한님의 자바 ORM 표준 JPA 프로그래밍을 읽고 정리했습니다. @Entity jpa를 사용하여 테이블과 매핑하기 위해서는 @Entity 어노테이션을 붙여야한다. 이 어노테이션이 붙은 테이블은 jpa가 관리하며 엔티티라고 부른다. 엔티티 클래스를 사용할 때는 세 가지의 주의사항이 있다. 1. 기본 생성자는 필수 jpa가 엔티티 객체를 생성할 때 기본 생성자를 이용하므로 이 생성자는 반드시 있어야 한다. 자바는 생성자가 없으면 기본 생성자를 자동으로 생성한다. 하지만 임의의 생성자를 만들었다면 기본 생성자를 만들어야 한다. public Member() {} // 기본 생성자 public Member(..

🍀spring/스프링 jpa

[Spring JPA] 영속성 관리

안녕하세요. 오늘은 jpa가 엔티티를 어떻게 관리하는 지 에 대해서 알아보려고 합니다. 김영한님의 자바 orm 표준 jpa 프로그래밍을 읽고 정리했습니다. 엔티티 매니저 팩토리와 엔티티 매니저 엔티티 매니저 팩토리는 엔티티 매니저를 만드는 공장이다. 이를 만드는 비용이 커서 한 개만 만들어서 공유하도록 설계되어 있다. 엔티티 매니저 팩토리는 여러 스레드가 동시에 접근해도 안전하지만 엔티티 매니저는 여러 스레드에서 공유하여 사용하면 동시성 문제가 생길 수 있어서 공유하면 안된다. 요청2의 엔티티 매니저는 db의 커넥션 풀을 사용하고 있는데 요청1의 엔티티 매니저는 사용하고 있지 않다. 엔티티 매니저는 db 연결이 꼭 필요한 시점까지 커넥션 풀을 얻지 않는다. 보통 트랜잭션을 시작할 때 커넥션을 획득한다. ..

🏆토이 프로젝트에서 생긴 일

[Spring] JPA 공부를 열심히 해야 하는 이유 (친구 추가 기능 설계)

안녕하세요. 죽지 않고 돌아왔습니다. 오늘은 jpa 지식이 부족한 채로 사용한 자의 최후 그리고 설계의 중요성에 대해 알아보려고 합니다. 처음에는 토이 프로젝트를 게시판, 댓글 정도로 생각하고 설계를 했는데 욕심이 생겨서 이것 저것 만들어보고 싶어졌습니다. 그래서 좋아요 기능도 넣고 친구 추가 기능도 넣었습니다. 그래서 대충 설계를 하고 바로 기능을 추가하려고 했습니다. 친구란? 친구 요청을 보내면 상대방이 받아야 이뤄질 수 있는 관계입니다. 그래서 요청을 보내는 db를 만들고 member 테이블에 List 형태로 친구를 저장하고자 했습니다. Friend 엔티티는 이렇게 짰고, @AllArgsConstructor @NoArgsConstructor @Getter @Builder @Entity public ..

🍀spring/🐛debug

[스프링 부트] JPA와 mysql 연동하기

db연동 때문에 많은 에러가 발생했기에 기록합니다. build.gradle에 jpa와 mysql 의존성을 추가합니다. implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'mysql:mysql-connector-java' spring.datasource.driver-class-name=com.mysql.jdbc.Driver 은 deprecated 되었기에 mysql.cj.jdbc.Driver로 수정합니다. mysql driver가 인식이 되지 않아서 이런 에러가 뜬다면 mysql에서 밑의 명령어를 사용하여 mysql 버전을 알아낸 다음 select version(); 이렇게 수정해줍니다. implemen..