您的位置:首页 > 数据库

Hibernate对数据库的操作总结

2012-09-07 22:08 417 查看
Hibernate对数据库的操作比较灵活,本文就其对数据库的增、删、改、查的几种方式进行了总结:

public class Test {

/**
* 添加---仅有一种方式
* 将刚创建的瞬态改变成持久化状态,session关闭之后又变为游离状态
*/
public static void add(){
GoodsInfo goodsInfo=new GoodsInfo();
goodsInfo.setG_amount(22);
goodsInfo.setG_categoryId("糕点");
goodsInfo.setG_name("法拉利糕点");
goodsInfo.setG_price(12.5f);
int res=DBUtils.add(goodsInfo);
if (res>1) {
System.out.println("添加成功!");
}
}

/**
* 查询的第一中方式:使用hql语句
*/
@SuppressWarnings("unchecked")
public static void queryByHql(){
String hql=" from GoodsInfo ";
Session session=SessionFactoryTools.getSession();
Query query = session.createQuery(hql);
List<GoodsInfo> list = query.list();
for(GoodsInfo goodsInfo : list){
System.out.println("使用hql语句:"+goodsInfo.getG_name());
}
}
/**
* 查询的第二种方式:使用持久化对象
* @param args
*/
public static void queryByPersistent(){
Session session=SessionFactoryTools.getSession();
Transaction tx=session.beginTransaction();
GoodsInfo goods=(GoodsInfo)session.get(GoodsInfo.class, 22);
//此处的tx.commit()有用吗?
tx.commit();
System.out.println("商品名称:"+goods.getG_name());

}

/**
*删除操作第一种方法--从持久化对象中执行删除操作
*/
public static void deleteByPersistent(){
Session session= SessionFactoryTools.getSession();
Transaction tx=session.beginTransaction();
try {
/*得到持久化对象*/
GoodsInfo goodsInfo= (GoodsInfo)session.get(GoodsInfo.class, 41);
/*对持久化对象执行删除操作*/
session.delete(goodsInfo);
tx.commit();
}
catch (Exception e) {
e.printStackTrace();
tx.rollback();
}
}

/**
*删除操作第二种方法--创建对象,给对象设置id
*/
public static void deleteByObj(){
Session session= SessionFactoryTools.getSession();
Transaction tx=session.beginTransaction();
try {
//GoodsInfo goodsInfo= (GoodsInfo)session.get(GoodsInfo.class, 22);//获取持久化对象
GoodsInfo goodsInfo=new GoodsInfo();//创建类,为类设置id
goodsInfo.setId(22);
session.delete(goodsInfo);
tx.commit();
}
catch (Exception e) {
e.printStackTrace();
tx.rollback();
}finally{
session.close();
}
}
/**
* 修改的操作 方法之一--从持久化类中进行更改
* 优点:不需要修改的字段不需要重新赋值时
* 缺点:增加了一次查询操作
*/
public static void updateByPersistent(){
Session session=SessionFactoryTools.getSession();
Transaction tx=session.beginTransaction();
try {
GoodsInfo goodsInfo=(GoodsInfo)session.get(GoodsInfo.class, 43);
//goodsInfo.setId(1);//id的值无法更改
goodsInfo.setG_amount(111);
goodsInfo.setG_categoryId("00111");
//如果其他的字段不更改,就不需要重新设置他们的值
//session.update(goodsInfo);//此句可以省略
tx.commit();
}
catch (Exception e) {
e.printStackTrace();
tx.rollback();
}finally{
session.close();
}
}

/**
* 更改的方式二:创建一个对象,设置id,执行session.update()
* 优点:不需要进行查询操作
* 缺点:即使仅需要更新一个字段,其他字段的值也都必须进行set设值,否则他们的值都变为空
*/
public static void updateByObject(){
GoodsInfo goodsInfo=new GoodsInfo();
goodsInfo.setId(42);
goodsInfo.setG_name("够格");
DBUtils.update(goodsInfo);

}
/**
* 尝试对更改方法一的封装
*/
public static void updateTry(){
Session session=SessionFactoryTools.getSession();
GoodsInfo goodsInfo=(GoodsInfo)session.get(GoodsInfo.class, 43);
GoodsInfo gInfo=new GoodsInfo();
gInfo.setG_amount(2222);
gInfo.setG_categoryId("222");
gInfo.setG_name("222");
session.save(gInfo);
DBUtils.update2(goodsInfo, 43, goodsInfo);
}

/**
* @param args
*/
public static void main(String[] args) {
//add();
//deleteByObj();
//deleteByPersistent();
//updateByPersistent();
//updateByObject();
updateTry();
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: