关于hibernate操作数据库的DAO类 spring里面有个支持hibernate的Dao,用他的模板就可以省去很多关于session的重复代码了,什么try啊catch啊finally啊统统都可以省去,还有声明式事务也可以加上 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 hibernate对数据库已经有了封装,各种数据库方法已经够简洁,如果再搞封装,那何时是头!现在都在追求简洁呢,不要再封啊封的了 稍微共享下吧,觉得可以就行package com.comm;import java.io.Serializable;import java.lang.reflect.ParameterizedType;import java.util.List;import org.hibernate.Criteria;import org.hibernate.Session;import org.hibernate.Transaction;import com.SessionFactory.HibernateSessionFactory;//T:表示某一种类型,这个类使用了泛型类,并且获取该泛型的CLass对象//这样我们就不需要在一些方法中间传入Class对象public class BaseDao3<T> { // 该语句得到当前对象的父类的第一个泛型类型对应的Class对象 // this.getClass()得到当前对象对应的Class // getClass().getGenericSuperclass())得到父类对应的class Class<T> entityClass = (Class<T>) ((ParameterizedType) this.getClass() .getGenericSuperclass()).getActualTypeArguments()[0]; public boolean add(T ob){ Session session=HibernateSessionFactory.getSession(); Transaction tx=null; try { tx=session.beginTransaction(); session.save(ob); tx.commit(); return true; } catch (Exception e) { e.printStackTrace(); tx.rollback(); } return false; } public boolean delete(T ob){ Session session=HibernateSessionFactory.getSession(); Transaction tx=null; try { tx=session.beginTransaction(); session.delete(ob); tx.commit(); return true; } catch (Exception e) { e.printStackTrace(); tx.rollback(); } return false; } public boolean update(T ob){ Session session=HibernateSessionFactory.getSession(); Transaction tx=null; try { tx=session.beginTransaction(); session.saveOrUpdate(ob); tx.commit(); return true; } catch (Exception e) { e.printStackTrace(); tx.rollback(); } return false; } public boolean deleteById(Serializable id){ Session session=HibernateSessionFactory.getSession(); Transaction tx=null; try { tx=session.beginTransaction(); session.delete(session.get(entityClass,id)); tx.commit(); return true; } catch (Exception e) { e.printStackTrace(); tx.rollback(); } return false; } //主键,具体的类型 public T getObById(Serializable id){ Session session=HibernateSessionFactory.getSession(); return (T)session.get(entityClass,id); } public List<T> getAllObject(){ Session session=HibernateSessionFactory.getSession(); Criteria cri=session.createCriteria(entityClass); return cri.list(); }} 用hibernate3,spring2吧,让dao继承HibernateDaoSupport。然后使用getHibernateTemplate(),就不用手动管理session和事务提交了。使用很方便。 我前几天刚用struts+DAO+hibernate开发的一个留言版把DAO帖出来吧!//PersonDAO.java类package com.jercy.struts.note.dao;import com.jercy.struts.note.vo.Person;public interface PersonDAO { // 做登陆验证 public boolean login(Person person) throws Exception;};//NoteDAO.java类package com.jercy.struts.note.dao;import java.util.List;import com.jercy.struts.note.vo.Note;public interface NoteDAO { // 增加操作 public void insert(Note note) throws Exception; // 修改操作 public void update(Note note) throws Exception; // 删除操作 public void delete(int id) throws Exception; // 按ID查询,主要为更新使用 public Note queryById(int id) throws Exception; // 查询全部 public List queryAll() throws Exception; // 模糊查询 public List queryByLike(String cond) throws Exception;}; 楼主可以利用java的反射机制,在抽象类中定义下方法:protected abstract Class getReferenceClass();子类只需要实现该方法,那么抽象类中所有的查询就可以通用了 引用:hibernate对数据库已经有了封装,各种数据库方法已经够简洁,如果再搞封装,那何时是头! 现在都在追求简洁呢,不要再封啊封的了------------------------------------------------------试想,如果一个项目有20个dao,每个dao有4~5个方法,就是80~100个方法,这时候spring模板的优势就体现了 我建了一个名叫java新时代的技术交流,群号是60694902 期待你们的加入哦! 本群要求成员必须是java专业 提供技术交流,问题解答,讨论Java程序员创业之路等。 在这里感觉每个方法让程序给你生成一个Session比较浪费,我们最好是利用ThreadLocal维护Session这样一个线程维护一个Session也符合一些业务需要! hibernate 与存储过程 java项目打不开 struts2.0 数据传递不了 Tomcat 部署webservice 我的webwork页面,无法正确输出换行符。而是作为一个字符串输出。 问:大家都用什么报表来做开发呢? groovy 运行问题 Java 与 .net 进行通讯 我是新手,刚学ejb,有个问题困扰我几天了,请大家帮帮忙!! 急急急:关于import的小问题! 帮忙指点一下迷茫的我! SOA是什么
package com.comm;import java.io.Serializable;
import java.lang.reflect.ParameterizedType;
import java.util.List;import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.Transaction;import com.SessionFactory.HibernateSessionFactory;
//T:表示某一种类型,这个类使用了泛型类,并且获取该泛型的CLass对象
//这样我们就不需要在一些方法中间传入Class对象public class BaseDao3<T> {
// 该语句得到当前对象的父类的第一个泛型类型对应的Class对象
// this.getClass()得到当前对象对应的Class
// getClass().getGenericSuperclass())得到父类对应的class
Class<T> entityClass = (Class<T>) ((ParameterizedType) this.getClass()
.getGenericSuperclass()).getActualTypeArguments()[0];
public boolean add(T ob){
Session session=HibernateSessionFactory.getSession();
Transaction tx=null;
try {
tx=session.beginTransaction();
session.save(ob);
tx.commit();
return true;
} catch (Exception e) {
e.printStackTrace();
tx.rollback();
}
return false;
}
public boolean delete(T ob){
Session session=HibernateSessionFactory.getSession();
Transaction tx=null;
try {
tx=session.beginTransaction();
session.delete(ob);
tx.commit();
return true;
} catch (Exception e) {
e.printStackTrace();
tx.rollback();
}
return false;
}
public boolean update(T ob){
Session session=HibernateSessionFactory.getSession();
Transaction tx=null;
try {
tx=session.beginTransaction();
session.saveOrUpdate(ob);
tx.commit();
return true;
} catch (Exception e) {
e.printStackTrace();
tx.rollback();
}
return false;
}
public boolean deleteById(Serializable id){
Session session=HibernateSessionFactory.getSession();
Transaction tx=null;
try {
tx=session.beginTransaction();
session.delete(session.get(entityClass,id));
tx.commit();
return true;
} catch (Exception e) {
e.printStackTrace();
tx.rollback();
}
return false;
}
//主键,具体的类型
public T getObById(Serializable id){
Session session=HibernateSessionFactory.getSession();
return (T)session.get(entityClass,id);
}
public List<T> getAllObject(){
Session session=HibernateSessionFactory.getSession();
Criteria cri=session.createCriteria(entityClass);
return cri.list();
}
}
package com.jercy.struts.note.dao;import com.jercy.struts.note.vo.Person;public interface PersonDAO {
// 做登陆验证
public boolean login(Person person) throws Exception;
};
//NoteDAO.java类
package com.jercy.struts.note.dao;import java.util.List;import com.jercy.struts.note.vo.Note;public interface NoteDAO {
// 增加操作
public void insert(Note note) throws Exception; // 修改操作
public void update(Note note) throws Exception; // 删除操作
public void delete(int id) throws Exception; // 按ID查询,主要为更新使用
public Note queryById(int id) throws Exception; // 查询全部
public List queryAll() throws Exception; // 模糊查询
public List queryByLike(String cond) throws Exception;
};
protected abstract Class getReferenceClass();
子类只需要实现该方法,
那么抽象类中所有的查询就可以通用了
hibernate对数据库已经有了封装,各种数据库方法已经够简洁,如果再搞封装,那何时是头! 现在都在追求简洁呢,不要再封啊封的了
------------------------------------------------------
试想,如果一个项目有20个dao,每个dao有4~5个方法,就是80~100个方法,这时候spring模板的优势就体现了
期待你们的加入哦!
本群要求成员必须是java专业
提供技术交流,问题解答,讨论Java程序员创业之路等。
我们最好是利用ThreadLocal维护Session这样一个线程维护一个
Session也符合一些业务需要!