Hibernate 학습(첫날)--CURD
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);
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 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에 따라 라이센스가 부여됩니다.