http://stackoverflow.com/questions/3585034/how-to-map-a-composite-key-with-hibernate @ID 방식과 @Embeddable 방식이 있는데 후자의 방식으로 코딩했다.(이유는 @Id 방식으로 했을 때 에러가 나서?)TagBusy의 PK 정보를 TagBusyId가 가지고 있다(3가지 복합키) @Entity @Table(name = "tag_busy") public class TagBusy { @EmbeddedId private TagBusyId tagBusyId; //PK @Column(name = "reg_date", nullable = true, insertable = false, updatable = false) private Date re..
Spring Data JPA를 적용해서 코딩하던 중 entity id로 하나의 object를 리턴 받고 싶은데 사용할 수 있는 메소드가 2가지라 찾아보았다. http://stackoverflow.com/questions/24482117/when-use-getone-and-findone-methods-spring-data-jpaJpaRepository.getOne(id);CrudRepository.findOne(id);According with the getOne API: Returns a reference to the entity with the given identifier. According with the findOne API: Retrieves an entity by its id.So there'..
Hibernate(annotation만 jpa 스펙이었음) -> 모든 인터페이스 jpa 스펙으로 변경SpringData JPA 적용 : JPA기반 ORM SupporterQueryDsl 적용 : create type-safe JPA queries 참조 : 1, 2 자세한 설정 방법은 나중에...Hibernate -> JPADB접근을 위한 interface를 sessionFactory에서 entityManagerFactory로 변경persistence.xml로 특정 orm의 설정을 그대로 두고 import 시키는 방식 대신 기존처럼 직접 바인딩하는 설정을 사용하였음기존 GenericDao에 sessionFactory inject 대신 EntityManager를 걸어주면 되고, annotation은 @Per..
Spring+Hibernate으로 프로젝트 진행 중에 junit으로 dao 테스트를 하는데쿼리도 잘 만들어지고, 결과도 뽑는데 롤백을 시작하겠다는 로그가 계속 나온다. Service단 테스트에서는 잘되는데 왜 dao테스트에서만 이럴까?dao 테스트에서는 @Rollback(false)로 명시하니 해결되었다. 아니면 클래스 단위로 걸어도 된다.@TransactionConfiguration(transactionManager="transactionManager", defaultRollback=false)public class Entity { 자세한 것은 더 찾아봐야 알 듯하다.
hibernate propertie에 아래 설정을 추가하면 된다.create는 기존 테이 블을 drop하고 재생성한다. 그 밖에 create-drop, update, validate가 있는데 필요할 때 찾아보자.이렇게 하면, DB스키마까지 자바단에서 제어가 가능한 장점이 있는 반면, 운영단계에서는 제약이 많을 것으로 예상된다.그리고 entity 모델에 컬럼별 데이터 타입이나 varchar의 경우 length 설정도 해줘야해서(기본 255), 나중에는상당히 많은 정보가 담기게 되어 오히려 가독성이 떨어지게 될 것이 염려가 된다.그래서 이 기능은 참고만 하고, 스키마를 수동으로 생성한 뒤에 사용하는 것이 나아보인다.(개인적으로 예상되는 결과이고, 실제로 해보진 않았기 때문에 나중에 생각이 바뀔 수도 있다.)..
직접 primary key로 조회Employee employee = (Employee) getSession().get(Employee.class, id); 조건생성Criteria criteria = getSession().createCriteria(Employee.class); criteria.add(Restrictions.eq("ssn", ssn)); return (Employee) criteria.uniqueResult();
어떤 커넥션풀을 사용할 것인가? DBCP or c3p0 우선 스프링에서 제공하는 org.springframework.jdbc.datasource.DriverManagerDataSource구현체는 '스프링 배포판에 포함된 구현체는 오로지 테스트만을 위해서 제공되는 것이고 풀링(pooling)은 하지 않는다.'라고 하니 테스트에만 사용하자 -> http://blog.outsider.ne.kr/882 DBCP or c3p0 c3p0이 운영환경에 좋지 않다는 얘기도 있고.. 의견이 분분한 것 같다.우선은 DBCP로 사용? http://bcho.tistory.com/906http://stackoverflow.com/questions/520585/connection-pooling-options-with-jdbc-d..