使用Hibernate不是很久,自己在边学习的过程中发现如果要每增加一个Entity就要实现一个DAO和DaoImp的话会比较麻烦,所以自己就写了下面这两个类来实现了对所有Entity通用的操作。
首先写一个 Dao interface:
package com.cennavi.dao;
public interface Dao<T> {
public void add(T a );
public T find(Class<T> t,int id);
public void delete(T t);
public void update(T t);
}
使用泛型,把需要使用Dao的Entity抽象为T;
然后写一个实现类 DaoImp.class:
package com.cennavi.daoImp;
import org.hibernate.Session;
import org.hibernate.Transaction;
import com.cennavi.dao.Dao;
import com.cennavi.factory.HibernateSessionFactory;
public class DaoImp<T> implements Dao<T> {
public Session sf=HibernateSessionFactory.getSession();
@Override
public void add(T obj) {
Transaction ts=sf.beginTransaction();
ts.begin();
sf.save(obj);
ts.commit();
}
@Override
public void delete(T obj) {
Transaction ts=sf.beginTransaction();
ts.begin();
sf.delete(obj);
ts.commit();
}
@SuppressWarnings("unchecked")
@Override
public T find(Class<T> t,int id) {
Transaction ts=sf.beginTransaction();
T obj=(T)sf.get(t, id);
ts.commit();
return obj;
}
@Override
public void update(T obj) {
Transaction ts=sf.beginTransaction();
ts.begin();
sf.saveOrUpdate(obj);
ts.commit();
}
}
当然没有完全泛型化,如find方法中的id.同时HibernateSessionFactory为一个sessionFactory的提供者。
下面是一个测试Entity
package com.cennavi.pojo;
import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
@Entity
public class User implements Serializable {
private static final long serialVersionUID = 1186025505012915442L;
@Id
@GeneratedValue
private int id;
private String name;
private String snn;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSnn() {
return snn;
}
public void setSnn(String snn) {
this.snn = snn;
}
}
采用注解方法来注册Entity
下面类简单测试:
package com.cennavi.client;
import com.cennavi.dao.Dao;
import com.cennavi.daoImp.DaoImp;
import com.cennavi.pojo.BigUser;
import com.cennavi.pojo.User;
public class UserDaoImpTest {
public static void main(String[] args) {
Dao<User> dao=new DaoImp<User>();
User user=new User();
user.setName("roan");
user.setSnn("1111111111111111111111");
dao.add(user);
}
}
以上只是为自己测试学习之用,比较简单。后来查找网络发现已经有完整的模版DAO,仅供参考罢了.
有了这个方法,自己学习起来速度当然加快拉,有了更多的时间去看书,不被重复的代码占用时间。
分享到:
相关推荐
hibernate_tools-entity实体、dao、hbm等代码生成
java源码有备注说明自动生成java entity和dao层,包含动态的sql语句,增删改查都有,为程序猿专注主要业务逻辑。
Java自动生成entity、dao、service、controller代码
对于经常写重复性代码的entity,dao,service,本例子中写了一个简单的自动生成小程序,有需要者可以下载
1)dao类的繁多,很多设计都是一个entity对应一个dao (不同的只有类名和方法名) 2)dao接口需要维护的method庞大。 3)业务逻辑改变时,dao需要同时修改两个类文件(接口和实现类) 在本文中,我将为您展示如何...
界面版MyBatis代码生成器,运行要求安装jdk1.8,自动生成entity、dao、service、serviceImpl、Mapper、Assist等。包含工具、文档、源码。
mybatis自动生成entity、dao、mapper,只需要配置数据库和生成的包路径即可生成,很好的生成工具
Mybatis数据库表自动生成entity,dao接口,mapper.xml附件
用MyEclipse自动生成Hibernate映射文件和实体,图解
Spring Boot基于 Mybatis 自动生成Entity,controller、serviceImpl ,Dao,方便开发,无需手写
1)dao类的繁多,很多设计都是一个entity对应一个dao (不同的只有类名和方法名) 2)dao接口需要维护的method庞大。 3)业务逻辑改变时,dao需要同时修改两个类文件(接口和实现类) 在本文中,我将为您展示如何...
mybatis根据数据库表自动生成对应的实体类,映射文件和dao类的工具包,
无法带图发表,请下载附件的word文档,里边有详细的截图! 博文链接:https://hanyou.iteye.com/blog/134799
根据数据库快速生成 dao - entity - service - controller - jsp 代码
Hibernate逆向生成entity和hbm.xml文件这是一个视频,比文件看起来更加给力。
使用Mybatis-Generator自动生成Dao、Model、Mapping相关文件
mybatis自动生成mapper、dao和entity配置文件,将文件放在classpath路径下
第二层:HibernateEntityDao,基于HibernateGenericDao,用泛型声明Dao所管理的Entity类,默认拥有该entity的CRUD方法。 第三层:HibernateExtendDao,基于HibernateEntityDao,主要扩展各种选择性的功能。
hibernate自动生成entity,映射文件,dao.等
轻量级javaee 企业应用于实践 有专业教授现场演示 内容和清晰 态度亲切 不可或缺