Hibernate 의 기본 지식

1. 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();
		}
	}
}

좋은 웹페이지 즐겨찾기