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();
}
}
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();
}
}
相关文章推荐
- hibernate操作数据库总结
- hibernate操作数据库总结
- hibernate操作数据库总结
- Hibernate操作数据库总结
- hibernate数据库操作总结
- 关于Hibernate操作数据库为空(数值类型)以及引起的问题的一点点总结
- JAVA操作数据库总结之组件篇-Hibernate
- Hibernate3.2(3):Hibernate的数据库操作总结
- hibernate操作数据库总结(转)
- Hibernate操作数据库的方式总结
- hibernate操作数据库方式总结
- servlet小总结3----同一用户的不同页面的共享数据的四种方法,及Servlet中操作数据库时等
- Zend Framework 第九节数据库操作学习总结
- 新炬分享8种热门数据库取前几条记录操作总结
- 数据库长时间未操作自己断开org.hibernate.exception.JDBCConnectionException: could not execute query
- 数据库知识总结(表结构操作)
- Web Service开发总结一 对数据库的操作
- Hibernate操作数据库之基础操作
- Laravel框架数据库CURD操作、连贯操作总结
- Java的Hibernate框架中用于操作数据库的HQL语句讲解