jotm.objectweb.org/ 2、http://www.atomikos.com/Main/TransactionsEssentials 一、使用JOTM例子 (1) Dao及实现 GenericDao 接口: public interface GenericDao { public int save(String ds, String sql, Object[] obj) throws Exception genericDao; public void setGenericDao(GenericDao genericDao) { this.genericDao = genericDao; } ; "); Object[] objs = new Object[]{userName,"1"}; genericDao.save("A", sql.toString(), objs); ; "); objs = new Object[]{userName,"男的"};//值超出范围 genericDao.save("B", sql.toString(), objs); } }
Burrow功能 Burrow Conversation:可以很轻松的开发业务流程 GenericDAO:尽可能少接触ISession(会话和事务) Stateful 如果您使用的是GenericDAO ,多种数据库的支持是非常透明的-您的代码不需要知道有多个数据库 Burrow GetStarted 创建一个Burrow asp.net项目 添加web.config db2hibernate.cfg.xml" /> </persistantUnits> </NHibernate.Burrow> 使用ISession,如果你使用Burrow.AppBlock.GenericDAO
> modelEntities, List<String> messages, boolean addMissing) throws GenericEntityException { genericDAO.checkDb > modelEntities, List<String> messages, boolean addMissing) throws GenericEntityException { genericDAO.checkDb
basePackage" value="com.mall.dubbo.dao" /> <property name="markerInterface" value="com.mall.dubbo.dao.<em>GenericDao</em> 5、对应的Dao接口 <em>GenericDao</em>: package com.mall.dubbo.dao; public interface <em>GenericDao</em> { } 该接口是所有的dao接口的父接口,对于与配置文件中的 org.springframework.stereotype.Repository; import com.mall.dubbo.entity.Cource; @Repository public interface CourceDao extends <em>GenericDao</em> com.mall.dubbo.dao; import com.mall.dubbo.entity.Student; @Repository public interface StudentDao extends <em>GenericDao</em> org.springframework.stereotype.Repository; import com.mall.dubbo.entity.Teacher; @Repository public interface TeacherDao extends <em>GenericDao</em>
```java public class GenericDao<T> { private Class<T> type; public GenericDao(Class<T> type)
匹配实现特定接口所有类方法execution(* top.linxz.dao.GenericDAO+.*(..)) 匹配所有save开头的方法 execution(* save*(..))
public abstract class GenericDAO<T,E> implements DAO<T,E>{ @PersistenceContext private EntityManager public PersonDAO extends GenericDAO<Person,Integer>{ public List<Person> getPersonByAge(int age){
ReentrantReadWriteLock lock = new ReentrantReadWriteLock(); /** * 数据库查询类 */ GenericDao genericDao = new GenericDao(); /** *
* 更新方法 *
* @param sql 防止其它线程对缓存读取和更改 lock.writeLock().lock(); try { //先更新数据库 int rows = genericDao.update map.get(key); if (value == null) { // 如果没有, 查询数据库 value = genericDao.queryOne自定义泛型类 例子 public class GenericDao<T>{ public void add(T x){ } public T findById(int id)
SqlPair, T> map = new HashMap<>(); ReentrantReadWriteLock lock = new ReentrantReadWriteLock(); GenericDao genericDao = new GenericDao(); // 更新操作,写锁 public int update(String sql, Object... params // 加写锁, 防止其它线程对缓存读取和更改 lock.writeLock().lock(); try { int rows = genericDao.update map.get(key); if (value == null) { // 如果没有, 查询数据库 value = genericDao.queryOne
VS Hibernate Hibernate 是JPA规范的一个实现,设计JPA provider, 而spring Data JPA 是一个JPA数据访问抽象 Spring Data JPA提供GenericDao
使用泛型的话,我们可以定义一个通用的数据访问层,如下所示: ```java public class GenericDao<T> { public void save(T entity) {
Action类和view 3.和web环境松耦合,从理论上讲可以用在swing里 4.支持tdd开发,框架本身就是以tdd开发方式开发 5.代码少,一般mvc需要5个类,xyz只要3个,还可以通过GenericDAO Frails 提供 Managed Bean 属性的injection 和 outjection Frails 中的Hibernate GenericDao 对象提供了基本的 CRUD 函数 和 其他一些有用