基于hibernate对数据库操作封装
来源:互联网 发布:python list fuzhi 编辑:程序博客网 时间:2024/06/05 07:04
hibernate将数据库层抽象出来,且很方便的进行操作,本文对其进行了二次封装,方便调用。类图如下所示
将对于数据库的操作抽象成为泛型接口,BaseDao实现泛型接口,UserDao实例化泛型,DaoFactory包含有
所有对于实体操作对象,当需要对某个实体操作时,只需要调用相应的get方法即可。
IBaseDao<T>接口
public interface IBaseDao<T> {public boolean save(T obj);public boolean saveOrUpdate(T obj);public boolean update(T domain);public boolean delete(T obj);public List<T> findByProperty(String propertyName,Object value);public List<T> findAll(String orderBy,boolean isAsc);public List<T> query(String sql);public int queryCount(String sql);public boolean executeSql(String sql);}
BaseDao<T>实现了接口
public class BaseDao<T> implements IBaseDao{private Class clazz;public BaseDao(Class clazz){this.clazz=clazz; }public Session getSession() {return HibernateSessionFactory.getSession();}public Transaction getTransaction() {return getSession().beginTransaction();}private String getTableName() {return clazz.getSimpleName();}@Overridepublic boolean save(Object obj) {Session session = null;try {session = getSession();session.beginTransaction();session.save(obj);session.getTransaction().commit();return true;} catch (Exception e) {e.printStackTrace();session.getTransaction().rollback();return false;} finally {if (session != null) {if (session.isOpen()) {// 关闭sessionsession.close();}}}}@Overridepublic boolean saveOrUpdate(Object obj) {Session session = null;try {session = getSession();session.beginTransaction();session.saveOrUpdate(obj);session.getTransaction().commit();return true;} catch (Exception e) {e.printStackTrace();session.getTransaction().rollback();return false;} finally {if (session != null) {if (session.isOpen()) {// 关闭sessionsession.close();}}}}@Overridepublic boolean update(Object obj) {Session session = null;try {session = getSession();session.beginTransaction();session.update(obj);session.getTransaction().commit();return true;} catch (Exception e) {e.printStackTrace();session.getTransaction().rollback();return false;} finally {if (session != null) {if (session.isOpen()) {// 关闭sessionsession.close();}}}}@Overridepublic boolean delete(Object obj) {Session session = null;try {session = getSession();session.beginTransaction();session.delete(obj);session.getTransaction().commit();return true;} catch (Exception e) {e.printStackTrace();session.getTransaction().rollback();return false;} finally {if (session != null) {if (session.isOpen()) {// 关闭sessionsession.close();}}}}@SuppressWarnings("unchecked")@Overridepublic List<T> findByProperty(String propertyName, Object value) {try {String queryString = "from " +getTableName()+ " as model where model." + propertyName + "= ?";Query queryObject = getSession().createQuery(queryString);queryObject.setParameter(0, value);return queryObject.list();} catch (RuntimeException re) {throw re;} finally {getSession().close();}}@SuppressWarnings("unchecked")@Overridepublic List<T> findAll(String orderBy, boolean isAsc) {try {String queryString = "from " + getTableName();if (isAsc) {queryString += " order by " + orderBy + " ASC";} else {queryString += " order by " + orderBy + " DESC";}Query queryObject = getSession().createQuery(queryString);return queryObject.list();} catch (RuntimeException re) {throw re;} finally {getSession().close();}}@SuppressWarnings("unchecked")@Overridepublic List<T> query(String sql) {try {SQLQuery queryObject = getSession().createSQLQuery(sql);queryObject.addEntity(clazz);return queryObject.list();} catch (RuntimeException re) {throw re;} finally {getSession().close();}}@Overridepublic int queryCount(String sql) {try {Query query = getSession().createSQLQuery(sql); BigInteger result = (BigInteger) query.uniqueResult(); return result.intValue();} catch (RuntimeException re) {throw re;} finally {getSession().close();}}@Overridepublic boolean executeSql(String sql) {Session session = null;try {session = getSession();session.beginTransaction();SQLQuery queryObject = session.createSQLQuery(sql);int rs = queryObject.executeUpdate();session.getTransaction().commit();if(rs<=0){return false;}} catch (RuntimeException re) {session.getTransaction().rollback();throw re;} finally {if (session != null) {if (session.isOpen()) {// 关闭sessionsession.close();}}}return true;}}
UserDao实例化泛型,并定义特殊的方法
public class UserDao extends BaseDao<User> {public UserDao(Class clazz) {super(clazz);}public List<User> findAllMen(){return findByProperty("sex", "男");}public List<User> findAllWomen(){return findByProperty("sex","女");}}
DaoFactory采用单例模式,并包含有所有对于实体的操作对象
public class DaoFactory {private static DaoFactory m_Instance = new DaoFactory();private UserDao userDao=null;private DaoFactory(){}public static DaoFactory getNewInstance(){return m_Instance;}public UserDao getUserDao(){if(userDao==null){userDao=new UserDao(User.class);}return userDao;}}
客户端调用
public static void main(String[]args){ DaoFactory dao=DaoFactory.getNewInstance(); UserDao user=dao.getUserDao(); List<User> list=user.findAllMen(); for(int i=0;i<list.size();i++){ System.out.println(list.get(i).getName()); }}
对于hibernate的配置,可以参考http://blog.csdn.net/jiuqiyuliang/article/details/39380465
0 0
- 基于hibernate对数据库操作封装
- hibernate对数据库操作代码
- Hibernate对数据库的操作
- hibernate对数据库操作代码
- HIbernate对数据库的操作
- 封装Hibernate对数据库的操作,包括: 添加,删除,修改,加载,查询,分页查询,命名查询
- 仿照hibernate封装的一个对数据库操作的jdbc工具类
- PHP中对数据库操作的封装
- PHP中对数据库操作的封装
- PHP中对数据库操作的封装
- mysql数据库对文件操作的封装
- PHP中对数据库操作的封装
- PHP中对数据库操作的封装
- Dao对数据库的操作进行封装
- lua对sqlite数据库操作封装
- python 对ACCESS数据库操作封装模块
- "Hibernate"对数据库操作的实例代码
- hibernate对数据库的简单操作
- 初级Java开发电脑环境配置
- Prolem3-1018
- CS231n 卷积神经网络与计算机视觉 6 数据预处理 权重初始化 规则化 损失函数 等常用方法总结
- Gym 100947K-Jpeg
- vertica-not fit in memory
- 基于hibernate对数据库操作封装
- 可变个数形参的方法
- 一二三级联动
- Android 基于AOP监控之——AspectJ使用指南
- 不使用数据线连接手机调试app 显示Log日志
- C语言字符串、数组与指针结合
- vertica-数据库强制关闭
- 用java求水仙花数最经典的代码
- win2012R2配置双网卡绑定