引入 jar包
hibernate配置文件 hibernate.cfg.xml
domain对象原型 User
hbm映射文件
单一测试Demo TestDemo
中间缺少某个包可能产生的异常
框架名称 | 引用jar | 必须性 |
hibernate | antlr-2.7.6.jar | 必要 |
asm-3.1.jar | 必要 | |
cglib-2.2.jar | 必要 | |
commons-collections-3.1.jar | 必要 | |
commons-logging.jar | 必要 | |
dom4j-1.6.1.jar | 必要 | |
hibernate3.jar | 必要 | |
hibernate-entitymanager.jar | 必要 | |
hibernate-jpa-2.0-api-1.0.0.Final.jar | 必要 | |
javassist-3.12.0.GA.jar | 必要 | |
jta-1.1.jar | 必要 | |
mysql-connector-java-5.0.7-bin.jar | 必要 |
hibernate.cfg.xml
<hibernate-configuration> <session-factory> <property name="myeclipse.connection.profile">com.mysql.jdbc.Driver</property> <property name="connection.url">jdbc:mysql://127.0.0.1:3306/myapplication</property> <property name="connection.username">root</property> <property name="connection.password">******</property> <property name="connection.driver_class">com.mysql.jdbc.Driver</property> <property name="dialect">org.hibernate.dialect.MySQLDialect</property> <property name="javax.persistence.validation.mode" >none</property> <property name="hibernate.hbm2ddl.auto">update</property> <mapping resource="com/web/wp/domain/hbm/Users.hbm.xml" /> </session-factory> </hibernate-configuration>
User
package com.web.wp.domain;
import java.math.BigDecimal;
import java.util.Date;
/**
* 用户原型
* */
public class User {
private Long u_id;
private String u_name;
private String sex;
private String message;
private Date birthday;
private int age;
private String liking;
private BigDecimal deposit;
public User() {
}
public User(String u_name) {
super();
this.u_name = u_name;
}
public Long getU_id() {
return u_id;
}
public void setU_id(Long u_id) {
this.u_id = u_id;
}
public String getU_name() {
return u_name;
}
public void setU_name(String u_name) {
this.u_name = u_name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getLiking() {
return liking;
}
public void setLiking(String liking) {
this.liking = liking;
}
public BigDecimal getDeposit() {
return deposit;
}
public void setDeposit(BigDecimal deposit) {
this.deposit = deposit;
}
}
TestDemo
package com.web.wp.hibernate;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.junit.Test;
import com.web.wp.domain.User;
/**
* 测试独立使用hibernate框架连接数据库,实现增删改查
*
* */
public class TestDemo {
/**
* 获取configuration
* 获取sessionfactory
* 获取session
* 获取Transaction
*
* */
@Test
/**测试*/
public void test(){
Configuration cf=new Configuration().configure();
SessionFactory factory=cf.buildSessionFactory();
/* Session session=factory.getCurrentSession(); 假如没有配置当前线程 会失败?*/
Session session=factory.openSession();
User us=new User("张三");
us=find(session, 2L);
us.setU_name("王五");
update(session, us);
factory.close();
}
/**保存*/
public void save(Session session,User us){
Transaction tx= session.beginTransaction();
try {
session.save(us);
tx.commit();
} catch (HibernateException e) {
e.printStackTrace();
tx.rollback();
}finally{
session.close();
}
}
/**删除*/
public void delete(Session session,User us){
Transaction tx= session.beginTransaction();
try {
session.delete(us);
tx.commit();
} catch (HibernateException e) {
e.printStackTrace();
tx.rollback();
}finally{
session.close();
}
}
/**
* 查询单个
* */
public User find(Session session,Long id){
Transaction tx= session.beginTransaction();
User us=(User)session.get(User.class, id);
tx.commit();
return us;
}
/**
* 修改单个
* */
public void update(Session session,User us){
Transaction tx= session.beginTransaction();
try {
session.saveOrUpdate(us);
tx.commit();
} catch (HibernateException e) {
e.printStackTrace();
tx.rollback();
}finally{
session.close();
}
}
}
肯能出现的异常
1 Caused by: java.lang.ClassNotFoundException: javax.persistence.EntityListeners
结果是 hibernate-distribution-3.6.0.Final\lib\jpa\hibernate-jpa-2.0-api-1.0.0.Final.jar这个包
2 跟valication相关的错误,先去将 <property name="javax.persistence.validation.mode" >none</property> 配置