hibernate 数据持久化后,原有数据被清除了。
hibernate初学者,请各位指教。
User.java
package com.asm.hibernate.domain;
import java.util.Date;
public class User {
private int id;
private String user_name;
private Date birthday;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUser_name() {
return user_name;
}
public void setUser_name(String user_name) {
this.user_name = user_name;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
}
User.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.asm.hibernate.domain">
<class name = "User" table = "user">
<id name="id" column="id" type="integer">
<!-- 指定主键的生成方式 -->
<generator class="native"></generator>
</id>
<property name = "user_name"></property>
<property name = "birthday"></property>
</class>
</hibernate-mapping>
HibernateUtil.java
package com.asm.hibernate.util;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public class HibernateUtil {
private static SessionFactory sf;
static {
Configuration cf = new Configuration();
//无参的情况下,默认是传递的hibernate.cfg.xml,读取其他文件名的配置文件需要加参数
cf.configure();
sf = cf.buildSessionFactory();
}
public static SessionFactory getSessionFactory() {
return sf;
}
public static Session getSession() {
return sf.openSession();
}
}
UserTest.java
package com.asm.hibernate.test;
import java.sql.Date;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.Transaction;
import com.asm.hibernate.domain.User;
import com.asm.hibernate.util.HibernateUtil;
public class UserTest {
static void addUser(User user) {
Session s = null;
Transaction ts = null;
try {
s = HibernateUtil.getSession();
//支持提交事务意味着提交回滚,很多数据库默认都支持回滚,所以两句话很重要
ts = s.beginTransaction();
s.saveOrUpdate(user);
ts.commit();
} catch (HibernateException e) {
if (ts != null) {
ts.rollback();
}
} finally {
if (s != null) {
s.close();
}
}
}
static User getUser(int id) {
Session s = null;
try {
s = HibernateUtil.getSession();
User u = (User)s.get(User.class, id);
System.out.println("userName = " + u.getUser_name());
System.out.println("birthday = " + u.getBirthday());
return u;
} finally {
if (s != null) {
s.close();
}
}
}
public static void main(String[] args) {
User user = new User();
// user.setUser_name("hanmeimei");
// user.setBirthday(Date.valueOf("1986-03-26"));
user.setUser_name("lilei");
user.setBirthday(Date.valueOf("1986-02-26"));
addUser(user);
User user1 = new User();
// user1.setUser_name("zhangsi");
// user1.setBirthday(Date.valueOf("1986-07-26"));
user1.setUser_name("lisan");
user1.setBirthday(Date.valueOf("1986-06-26"));
addUser(user1);
getUser(1);
getUser(2);
}
}
数据的数据每次只有当前插入的两条数据,为什么。哪里的问题,请高手指教
------解决思路----------------------
<prop key="hibernate.hbm2ddl.auto">这个设置的是create了吧,改为update或者none</prop>
------解决思路----------------------
版主厉害!!我看了半天都没看出问题在哪