Hibernate 학습(첫날)--CURD

Hibernate 실현 대상 의 첨삭 검사
   Hibernate 는 자바 환경 을 위 한 대상/관계 데이터베이스 매 핑 도구 로 대상 모델 이 표시 하 는 대상 을 SQL 기반 관계 모델 데이터 구조 에 매 핑 합 니 다.
   Hibernate 의 장점:오픈 소스 무료;경량급 패키지;확장 성;안정 적 인 발전.
   사용 절차:
1,자바/WEB 프로젝트 를 새로 만 듭 니 다.
    new-->웹 프로젝트-->프로젝트 이름 을 작성 합 니 다.
2,프로젝트 에서 오른쪽 단추-->my Eclipse->Add Hibernate Capabilities-->Hibernate 버 전 번호 선택-->Next-->데이터베이스 형식 선택-->Next --> 자바 패키지 선택 --> Finish.(Hibernate 와 관련 된 파일 두 개 생 성:hibernate.cfg.xml,HibernateSsionFactory.java)
3.맵 클래스 와 맵 파일 생 성:
DB 로 전환,선택 표,오른쪽 단추-->Hibernate Reverse Engineering...-->생 성 할 파일(실체 클래스,맵 파일,dao)을 선택 하 십시오-->Generation Id 는 native-->Finish 를 선택 하 십시오.
4.스스로 Dao 방법 을 쓴다.
코드 는 다음 과 같 습 니 다.
인터페이스 클래스:BaseDao
package com.justplay.dao;
import java.util.List;
public interface BaseDao {
 public void save(Object o);
 public void update(Object o);
 public void delete(Object o);
 public Object get(Class<?> clazz, long id);
 public List<?> list(String hql);
}

구현 클래스:BaseDaoImpl
package com.justplay.dao.impl;
import java.util.List;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.Transaction;
import com.justplay.dao.BaseDao;
import com.justplay.util.HibernateSessionFactory;
public class BaseDaoImpl implements BaseDao {
 public void save(Object o) {
  Session session = HibernateSessionFactory.getSession();
  Transaction tr = session.beginTransaction();
  try {
   session.save(o);
   tr.commit();
  } catch (HibernateException e) {
   e.printStackTrace();
  }finally{
   HibernateSessionFactory.closeSession();
  }
 }
 public void update(Object o) {
  Session session = HibernateSessionFactory.getSession();
  Transaction tr = session.beginTransaction();
  try {
   session.update(o);
   tr.commit();
  } catch (HibernateException e) {
   e.printStackTrace();
  }finally{
   HibernateSessionFactory.closeSession();
  }
 }
 public void delete(Object o) {
  Session session = HibernateSessionFactory.getSession();
  Transaction tr = session.beginTransaction();
  try {
   session.delete(o);
   tr.commit();
  } catch (HibernateException e) {
   e.printStackTrace();
  }finally{
   HibernateSessionFactory.closeSession();
  }
 }
 public Object get(Class<?> clazz, long id) {
  Session session = HibernateSessionFactory.getSession();
  try {
   return session.get(clazz, id);
  } catch (HibernateException e) {
   e.printStackTrace();
  }finally{
   HibernateSessionFactory.closeSession();
  }
  return null;
 }
 public List<?> list(String hql) {
  Session session = HibernateSessionFactory.getSession();
  try {
   return session.createQuery(hql).list();
  } catch (HibernateException e) {
   e.printStackTrace();
  }finally{
   HibernateSessionFactory.closeSession();
  }
  return null;
 }
}

테스트 클래스 TestBaseDaoImpl:
package test;
import java.util.List;
import junit.framework.TestCase;
import com.justplay.dao.BaseDao;
import com.justplay.po.User;
public class TestBaseDaoImpl extends TestCase {
 BaseDao dao;
 protected void setUp() throws Exception {
  dao = new com.justplay.dao.impl.BaseDaoImpl();
 }
 protected void tearDown() throws Exception {
  super.tearDown();
 }
 public void testSave() {
  User u = new User();
  u.setUsername("Tom");
  u.setPassword("1234");
  dao.save(u);
 }
 public void testUpdate() {
  User u = (User) dao.get(User.class, 2);
  u.setUsername("Lucy");
  u.setPassword("2345");
  dao.update(u);
 }
 public void testDelete() {
 }
 public void testGet() {
  System.out.println(dao.get(User.class, 1));
 }
 public void testList() {
  List<?> list = dao.list("from User");
  System.out.println(list.size());
 }
}

실체 클래스 를 보 여 주세요:
User
package com.justplay.po;
/**
 * User entity. @author MyEclipse Persistence Tools
 */
public class User implements java.io.Serializable {
 // Fields
 private static final long serialVersionUID = 1L;
 private Long id;
 private String password;
 private String username;
 // Constructors
 /** default constructor */
 public User() {
 }
 /** full constructor */
 public User(String password, String username) {
  this.password = password;
  this.username = username;
 }
 // Property accessors
 public Long getId() {
  return this.id;
 }
 public void setId(Long id) {
  this.id = id;
 }
 public String getPassword() {
  return this.password;
 }
 public void setPassword(String password) {
  this.password = password;
 }
 public String getUsername() {
  return this.username;
 }
 public void setUsername(String username) {
  this.username = username;
 }
 @Override
 public String toString() {//     
  return "User [id=" + id + ", password=" + password + ", username="
    + username + "]";
 }
}

BaseDao 에 방법 이 너무 많다 고 생각 되면 방식 을 바 꿀 수 있 습 니 다:UserDaoImpl
package com.justplay.dao.impl;
import com.justplay.dao.UserDao;
import com.justplay.po.User;

//   BaseDaoImpl(            ),  UserDao
 public class UserDaoImpl extends BaseDaoImpl implements UserDao {
 public void save(User u) {
  super.save(u);
 }
}

UserDao
package com.justplay.dao;
import com.justplay.po.User;
public interface UserDao {
 public void save(User u);
}

 테스트 클래스 TestUserDaoImpl:
package test;
import junit.framework.TestCase;
import com.justplay.dao.UserDao;
import com.justplay.dao.impl.UserDaoImpl;
import com.justplay.po.User;
public class TestUserDaoImpl extends TestCase {
 UserDao dao;
 protected void setUp() throws Exception {
  dao = new UserDaoImpl();
 }
 protected void tearDown() throws Exception {
  super.tearDown();
 }
 public void testSaveUser() {
  User u = new User();
  u.setPassword("1234");
  u.setUsername("Jack");
  dao.save(u);
 }
}

좋은 웹페이지 즐겨찾기