본문 바로가기

Hibernate

[Hibernate] 2차 캐시 내장 동시성 전략 1. Transactional - 관리형 환경에서만 이용 가능하며, 필요한 경우 '반복 가능한 읽기'까지의 트랜잭션 격리 수준을 완전하게 보장한다. 주로 읽기만 하는(갱신은 거의 일어나지 않는)데이터에 이 전략을 사용한다. 2. Read-Write - 타임스탬프 메커니즘을 사용해'커밋된 읽기' 격리 수준을 유지하며, 클러스터 환경이 아닌 곳에서만 이용할 수 있다. 마찬가지로 주로 읽기만 하는(갱신은 거의 일어나지 않는)데이터에 이 전략을 사용한다. 3. Nonstrict-Read-Write - 캐시와 데이터베이스 간의 일관성을 보장하지 않는다. 동일한 엔티티에 동시에 접근할 가능성이 있다면 타임아웃 만료를 가능한 짧게 구성해야 한다. 그렇지 않으면 캐시에서 스테일 데이터를 읽어올지도 모른다. 스테일 데이.. 더보기
[Hibernate] update 와 merge 차이점 update 의 사용방법this.mSessionFactory.getCurrentSession().update(object);object.set~~~~~~~ merge 의 사용방법object.set~~~~~~this.mSessionFactory.getCurrentSession().merge(object); 2개의 차이점을 보면 이미 영속성(Persistent)상태이면 상황에따라 update가 되지만 그렇지 않을경우 update 함수를 통해서 영속성 상태를 가지게 만들고 그 상태에서 수정을 해야 DB에 update가 적용이 됩니다. 하지만 merge의 경우 영속성이 아닌 객체 예를들면 다른 곳에서 전달받은 객체를 DB에 적용하고 싶을때 사용하면 적합히지 않을까 생각이 됩니다. merge의 경우 id가 없는 .. 더보기
org.jasypt.exceptions.EncryptionOperationNotPossibleException 오류 암호화 라이브러리를 사용하니 다음과 같은 오류가 떴다... Caused by: org.jasypt.exceptions.EncryptionOperationNotPossibleException: Encryption raised an exception. A possible cause is you are using strong encryption algorithms and you have not installed the Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files in this Java Virtual Machine 해결방법은 간단하다.(본인의 경우 OS X 이다.)1. 우선 여기로 이동해서 파일을 받는다.!!http.. 더보기
[Hibernate] Hibernate4 와 EHCache 연동하기~!! 원래 Ehcache와 Hibernate를 따로 쓰고 있는데... 이제서야 따로 쓰지않고 알아서 연동하는게 있다는걸 알았다~!! 1. pom.xml org.hibernatehibernate-ehcache4.2.8.Final 2. hibernate Setting 바꾸기!!!! (아주 중요!!) Hibernate 3.3 and higherFor instance creation: net.sf.ehcache.hibernate.EhCacheRegionFactory To force Hibernate to use a singleton of Ehcache CacheManager: net.sf.ehcache.hibernate.SingletonEhCacheRegionFactory Hibernate 4.xFor Hiberna.. 더보기
[Hibernate] @ManyToMany 자기 자신의 collection가지기~! (친구 리스트를 가지고 있기) 아래의 구조는 User 구조이다.~~ 기본적인 구조다. 그리고 이건 User가 친구리스트를 가지기 위해 필요한 테이블~!! 아래의 코드에서 @ManyToMany 애노테이션과 @JoinTable 설정을 보자~! 다음과 같이 설정을 하면 Hibernate가 알아서 Set으로 관리해준다. @Entity @Table(name = "User") public class User { //Getter & Seeter @Id @Column (name = "id") @GeneratedValue private Integer mId; //나머지 값 설정... @ManyToMany @JoinTable(name = "user_friends", joinColumns = @JoinColumn(name = "user_Id"), inv.. 더보기
[Spring Framework] Hibernate 4 Search 사용하기~! (Latitude, Longitude 검색) Hibernate 4를 연동했다는 전제에 설명을 하겠습니다.~! 1. pom.xml파일 org.hibernatehibernate-search4.4.2.Final 2. 모델 설정하기~! @Entity@Spatial@Indexed@Table (name = "db tableName~!")public class SomeThing {public int getmId() {return mId;}public void setmId(int mId) {this.mId = mId;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Double getLastLongitude() {return lastLon.. 더보기
[Spring Framework] Hibernate 4 연동하기 1. 라이브러리 추가하기~! (Pom.xml ) org.hibernate hibernate-core 4.2.8.Final 2. 하이버네이트 설정 아래와 같은 설정을 추가해줍니다. ${jdbc.dialect} true 3. 위에 설정파일중에 local_db.properties 라고 파일을 연동하였는데 임의로 이름을 변경을 하거나 다음 이름과 같은 파일을 만들고 jdbc.driverClassName=com.mysql.jdbc.Driverjdbc.dialect=org.hibernate.dialect.MySQLDialectjdbc.url=jdbc:mysql://DB 주소?autoReconnect=true&interactiveClient=true&autoReconnectForPools=truejdbc.userna.. 더보기
[Hibernate] Many To One 1. 객체를 가지고 있어야할 모델에 객체를 넣는다 (해당 예제의 경우 SomeThing이 Action을 가지고 있음)public class SomeThing { private Action lastAction; } 2. Xml 추 가 3. DB변경 last_action 이라는 int값을 Column 값을 넣어준다. 4. 적용완료~! 더보기
[Hibernate] C3P0 connection Pool 디비 연결시 Pool로 관리하면 좋다고 한다. 생성하는 비용과 캐싱기능으로 성능상 이점을 얻을수 있다고 하여 스프링에 적용해보았다. 1. pom.xml org.hibernatehibernate-c3p03.6.10.Final 2. Hibernate 설정 추가~!5 20 300 50 3000 더보기
[Play Framework] No EntityManager bound to this thread. Try wrapping this call in JPA.withTransaction, or ensure that the HTTP context is setup on this thread. 테스트를 하다가 JPA관련 테스트를 진행하면 다음과 같은 에러가 발생한다....이유는 Transaction과 관련이 있었다. 현재 테스트 하는 Thread가 binding?이 되지 못해서 생기는 오류인듯 하다. 해결방법은 간단하다. [error] Test ServiceTest.deviceServiceTest failed: java.lang.RuntimeException: No EntityManager bound to this thread. Try wrapping this call in JPA.withTransaction, or ensure that the HTTP context is setup on this thread.[error] at play.db.jpa.JPA.em(JPA.java:55)[erro.. 더보기