공부기록/JPA (5) 썸네일형 리스트형 transaction isolation level transaction isolation level에는 read uncommitted, read committed, non-repeatable read, serializable이 있습니다. read uncommitted는 트랜잭션이 두개가 동시에 실행중이라고 가정했을 때, 한 곳에서 수정한 entitiy를 커밋하기도 전에 다른 트랜잭션에서 값을 읽어올 때, 수정된 값을 받아올 수 있습니다. 이런 문제를 dirty read라고 합니다. read committed는 commit 된 entitiy만 읽어오므로, dirty read의 문제는 해결하였습니다. 하지만, 트랜잭션을 동시에 실행중이고 A트랜잭션에서 select, B트랜잭션에서 update, A트랜잭션에서 select를 했다고 했을때, 동일한 A 트랜잭션.. 트랜잭션 격리 수준 read uncommitted - 한 프로세스에서 여러개의 트랜잭션이 사용될 때, 하나의 트랜잭션에서 작업을 처리하고, 커밋하지 않았는데, 다른 트랜잭션에서 커밋되지 않은 데이터를 가져와서 읽는 dirty read가 발생할 수 있다. read committed - dirty read가 발생하지 않는다. non-repeatable read가 발생할 수 있다. non-reapable read란 읽는 도중에 다른 트랜잭션이 해당 데이터를 변경하는 경우, 동일한 쿼리로 SELECT를 했지만, 두 결과가 다를 수 있다. 하나의 트랜잭션이 진행되는 동안, 동일한 SELECT는 같은 결과를 반환해야하는 데, 그렇지 못하는 것을 non-repeatable read라고 한다. JPA는 기본적인 트랜잭션 격리 수준을 re.. IdClass vs EmbeddedId 복합키를 jpa에서 사용하는 방법 IdClass : pk에 해당하는 멤버변수들을 모아서 다른 클래스로 만들고, 실제로 사용할 클래스에서 IdClass annotation을 사용하여 지정함 EmbeddedId: Embeddable로 다른 클래스를 만들고, EmbeddedId로 해당 클래스를 지정해두면, 복합키로 사용할 수 있음 IdClass는 상속관계에 있어서, 부모 클래스와 자식 클래스의 멤버변수들을 복합하여 Pk로 사용하는 경우에 장점이 있고, EmbeddedId는 객체지향적으로 사용할 수 있는 장점이 있다. 둘다 serializable 인터페이스를 구현해야하고, equals, hashCode를 구현해야 한다. 기본 생성자가 있어야 한다. 식별자 클래스는 public이어야 한다. IdClass의 경우 .. JPA 면접 대비 공부중 ORM란 객체를 데이터베이스 테이블에 매핑해준다는 것입니다. 패러다임 불일치를 해결하기 위해 개발자들이 기본적으로 해야했던 일들을 대신처리해주어 개발 생산성이 향상됩니다. JPA란? ORM의 자바 표준 인터페이스 입니다. 엔티티의 상태(생명주기)에 대해서 설명해주세요 기본적으로 비영속상태로 아무관계가 없다가 퍼시스트되면 영속상태가 됩니다. 여기서 트랜잭션으로 커밋되면 DB에 가게 됩니다. 또는 리무브 당하면 영속상태가 해제됩니다. 또는 준영속 상태라고 있는데, 트랜잭셔널 블록을 벗어나는 경우에 그렇게 됩니다. 또는 영속성 컨텍스트를 클리어하거나 삭제하면 그렇게 됩니다. 영속성 컨텍스트가 무엇인가? 엔티티를 1차캐시로 관리해주고, SQL쓰기 저장소가 있어서, 쓰기 지연을 지원하는 저장소입니다. 영속성 컨텍.. 자바 ORM 표준 JPA 프로그래밍 #1~5 1장 SQL을 직접 다루면 문제의 소지들이 있음! (jdbc 사용시 table에 변경이 있다면 바꿔야 할 코드가 많음) → JPA를 사용하자! 뿐만 아니라 패러다임의 불일치가 발생 ⇒ 객체와 테이블은 다르다! 객체- 상속가능, 테이블 -불가능 객체는 탐색이 가능하지만, 테이블은 탐색시 join을 해야하며, 많이하면 비용이 엄청남 또한 객체는 연결이 단방향, 테이블은 양방향 ⇒ 이런 패더라임의 차이로 개발자가 많은 시간을 투자해야했음 ⇒ 위의 문제들을 JPA가 해결해줌 ( 개발자의 개발시간을 많이 단축해줌) ⇒ 복잡한 통계정보같은 것들은 여전히 sql을 사용해야함 2장 기본적인 JPA 프로젝트( 여기에 사용된 기본적인 어노테이션들 소개) JPA의 구조 ( DB마다 방언이 있는데, 그래서 db마다 구현체를 .. 이전 1 다음