当前位置: 代码迷 >> Java Web开发 >> hibernate 数据持久化后,原有数据被清除开
  详细解决方案

hibernate 数据持久化后,原有数据被清除开

热度:199   发布时间:2016-04-16 21:49:16.0
hibernate 数据持久化后,原有数据被清除了。
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>
------解决思路----------------------
引用:
<prop key="hibernate.hbm2ddl.auto">这个设置的是create了吧,改为update或者none</prop>


版主厉害!!我看了半天都没看出问题在哪
  相关解决方案