Hibernate 의 기본 지식
1。 Domain Object (영역 대상) - > Mapping (맵 파일) - > DB (맵 파일) (공식 추천 개발 절차)
나의 첫 번 째 hibenate 인 스 턴 스 는 바로 이런 모델 로 개발 한 것 이다.
2。 DB 부터 도구 로 Mapping 과 Domain Object 생 성 (이런 개발 모델 이 많다)
3。 맵 파일 부터 시작 합 니 다.
구체 적 으로 개발 할 때 필요 에 따라 적합 한 개발 모델 을 선택 할 수 있다.
둘.Domain Object (POJO) 류 의 일부 제한
1。 기본 구조 방법 (즉, 무 참 구조 방법) 이 있어 야 합 니 다. (hibenate 가 실체 대상 을 만 들 때 자바 반사 체 제 를 사 용 했 기 때 문 입 니 다) (The no - argument constructor is a requirement for all persistent classes; Hibernate has to create objects for you, using Java Reflection.)
2。 식별 자 Id (주 키) 선택 가능
3。 final 이 아 닌, hibenate 게 으 름 로드 에 영향 을 줍 니 다 (선택 가능). (하나의 클래스 가 final 수식 이 있 을 때 더 이상 계승 할 수 없 기 때문에 게 으 름 로드 의 일부 특성 은 실체 류 를 계승 하여 이 루어 져 야 합 니 다).
표준 POJO 클래스 는 다음 과 같 습 니 다. (Hibernate Reference 에서 왔 습 니 다)
package org.hibernate.tutorial.domain;
import java.util.Date;
public class Event {
private Long id;
private String title;
private Date date;
//
public Event() {}
public Long getId() {
return id;
}
private void setId(Long id) {
this.id = id;
}
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
}
3. *. hbm. xml 프로필 역할 설명
*.hbm. xml 설정 파일 은 실체 대상 이 어느 데이터베이스 시트 의 기록 과 대응 하 는 지, 그리고 실체 대상 의 각 속성 이 표 의 어느 열 에 대응 하 는 지 설명 하 는 데 사 용 됩 니 다.서로 다른 성질 의 속성 (예 를 들 어 메 인 키 와 일반 속성) 은 서로 다른 탭 으로 매 핑 합 니 다.실체 대상 의 어떤 속성 이 데이터베이스 에 저장 되 지 않 아 도 된다 면 *. hbm. xml 프로필 에 서 는 이 속성 을 설정 할 필요 가 없습니다.
4. Hibernateutil 도구 류
제 가 자주 사용 하 는 Hibernateutil 도구 코드 는 다음 과 같 습 니 다.
public final class HibernateUtil {
private static SessionFactory sessionFactory;
private static ThreadLocal session = new ThreadLocal();
// HibernateUtil 。 。
private HibernateUtil() {
}
// java 。 。
static {
// hibernate.cfg.xml , hibernate.cfg.xml ,
// cfg.configure("fileName") 。fileName hibernate 。
// configure() :
/**
* Use the mappings and properties specified in an application
* resource named <tt>hibernate.cfg.xml</tt>.
*/
//public Configuration configure() throws HibernateException {
//configure( "/hibernate.cfg.xml" );
//return this;
//}
Configuration cfg = new Configuration();
cfg.configure();
sessionFactory = cfg.buildSessionFactory();
}
public static Session getThreadLocalSession() {
Session s = (Session) session.get();
if (s == null) {
s = getSession();
session.set(s);
}
return s;
}
public static void closeSession() {
Session s = (Session) session.get();
if (s != null) {
s.close();
session.set(null);
}
}
public static SessionFactory getSessionFactory() {
return sessionFactory;
}
public static Session getSession() {
return sessionFactory.openSession();
}
//
public static void add(Object entity) {
Session s = null;
Transaction tx = null;
try {
s = HibernateUtil.getSession();
tx = s.beginTransaction();
s.save(entity);
tx.commit();
} catch(HibernateException e){
if(tx != null)
tx.rollback();
throw e;
}finally {
if (s != null)
s.close();
}
}
//
public static void update(Object entity) {
Session s = null;
Transaction tx = null;
try {
s = HibernateUtil.getSession();
tx = s.beginTransaction();
s.update(entity);
tx.commit();
} catch(HibernateException e){
if(tx != null)
tx.rollback();
throw e;
}finally {
if (s != null)
s.close();
}
}
//
public static void delete(Object entity) {
Session s = null;
Transaction tx = null;
try {
s = HibernateUtil.getSession();
tx = s.beginTransaction();
s.delete(entity);
tx.commit();
} catch(HibernateException e){
if(tx != null)
tx.rollback();
throw e;
}finally {
if (s != null)
s.close();
}
}
//
public static Object get(Class clazz, Serializable id) {
Session s = null;
try {
s = HibernateUtil.getSession();
Object obj = s.get(clazz, id);
return obj;
} finally {
if (s != null)
s.close();
}
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[JPA] 즉시로딩(EAGER)과 지연로딩(LAZY) (왜 LAZY 로딩을 써야할까?) (1)Proxy는 이 글의 주제인 즉시로딩과 지연로딩을 구현하는데 중요한 개념인데, 일단 원리는 미뤄두고 즉시로딩과 지연로딩이 무엇인지에 대해 먼저 알아보자. 눈 여겨 볼 곳은 'fetch = FetchType.EAGER...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.