Tag: dao

DAO和DAL有什么区别?

在学校学习Java之后,我对DAO模式( 数据访问对象 )非常熟悉。 但是在工作中我使用.NET。 在.NET中经常谈论DAL( 数据访问层 )。 对我来说他们的目的似乎很相似。 所以问题是DAO和DAL基本上是一样的东西? 术语“DAL”是否只是用来与数据访问对象混合的?

DAO与ORM(hibernate)模式

我读过一些文章,DAO不是强制性的,它的实现是由“它依赖”,换句话说,我们可以在ORM和DAO模式之间进行select。 好吧,让我们假设我不想使用DAO模式,所以我只使用会话CRUD和由hibernate(my ORM)提供的查询操作。 特别是对于“search”和“查找”查询是不正确的,总是要重写它们,所以合理的考虑把它们放到一个类中。 但是这个类是一个简单的DAO,没有全部实现DAO模式和DAOFactory,只是一个轻量级的DAO实现。 所以,重点是我们需要一个DAO,并且select重DAO实现还是轻量级DAO实现? 我说的是错的? 编辑我有另一个问题是把道相互作用,例如我必须login一个用户,并写入login日志(无用的例子,我知道…) 所以在一个DAO模式中,我有所有通用的dao实现,一个DAOFactory,最后是UserHibernateDAO和LogHibernateDAO。 login操作是一种业务方法 : private void login(String username, String password){ daoFactory.beginTransaction(); UserDAO userDao=daoFactory.HIBERNATE.getUserDao(); LogDAO logDao=daoFactory.HIBERNATE.getLogDao(); if(userDao.checkAccount(username, password){ User user=userDao.findByAccount(username, password); logDao.save(new Log("log-in", user); } daoFactory.commit(); } 这是合理的吗? 我可以用这种方式使用道? 如果我想处理exception,更好的地方是在一个业务逻辑? EDIT2让我们假设使用DAO模式,这样做的主要原因是能够在技术(ORM-> JDBC等)之间切换,它一切正常,但我在哪里可以处理hibernate会话和事务? 我不能把它放进一个DAO,它是anty模式,我不能把它放到一个服务层,因为在一个hipohtetycal开关我不得不删除所有这个交易(因为其他技术可能不会使用它们)。

我发现JPA,或类似的,不鼓励DAO模式

我发现JPA,或类似的,不鼓励DAO模式。 我不知道,但我觉得这样,尤其是服务器pipe理的JTA经理。 经过充分的动手使用DAO模式,我开始围绕这种模式devise基于JPA的应用程序。 但它不适合,国际海事组织。 我倾向于失去相当JPA和所有function。 那么,假设你用一个悲观的locking激发了一个查询,并且从DAO方法返回了一个entite列表。 返回时,事务结束并locking消失(服务器pipe理的JTApipe理器的情况)。 所以,没有意义,松散地说。 但是有一些有效的例子。 另一个例子是更微不足道的。 假设你启动了一个查询来获得一个实体,它与其他实体有一个延迟的加载一对多的关联。 在返回DAO方法后,事务结束。 延迟加载不会工作了,你只是得到null或什么的。 为了应付这个问题,我们手工加载它。 我们做一些像a.getBList().size() 。 因此,IMO最好不要专门制作一个DAO,并且在你的商业bean中这样做,这样你就可以利用这些有用的特性。 或者ORM API可以被认为是一个DAO /数据层本身。 所以,我们不需要再做一个。 你们都在想什么? 注:我绝对不会说DAO模式已经过时。 事实上,这取决于情况。

Java EE架构 – 在使用像JPA 2这样的ORM时,DAO仍然是推荐的吗?

如果我使用的是像JPA2那样的ORM – 我的实体映射到了我的数据库,那么我还应该使用DAO吗? 这似乎是更多的开销。 例如,我需要维护三个额外的软件包: 一个指定我的域对象(这几乎映射我的实体对象): public class Employee { private String firstName; private String lastName; … // Getters and setters } 一个包含指定我的DAO方法的接口 public interface EmployeeDAO { public void addEmployee(Employee employee); public Employee getEmployeeById(long id); … } 一个包含实现我的DAO的会话bean public EmployeeJpaDAO implements EmployeeDAO { interface method implementations here …. private method that transform my Employee entity […]

Java中的数据访问对象(DAO)

我正在阅读一个文档,我遇到了一个名为DAO的术语。 我发现它是一个数据访问对象。 有人可以解释我实际上是什么? 我知道这是一种从不同types的数据源获取数据的接口,在我的这个小小的研究中间,我碰到了一个叫做数据源或者数据源对象的概念,事情就被搞乱了。 我真的想知道DAO在编程方面的用途。 它是如何使用的? 任何链接到页面,解释这个概念从非常基本的东西也赞赏。

单个DAO和通用的CRUD方法(JPA / Hibernate + Spring)

在我之前的问题, DAO和服务层(JPA / Hibernate + Spring)之后 ,我决定在使用JPA / Hibernate,Spring和Wicket的应用程序中为我的数据层(至less在开头)使用一个DAO。 提出了使用通用的CRUD方法,但我不太确定如何使用JPA来实现这一点。 请给我一个例子,或者分享一个关于这个的链接?

获取抽象超类的genericstypes参数的实际types

我有一个类像: public abstract class BaseDao<T extends PersistentObject> { protected Class<T> getClazz() { return T.class; } // … } 但编译器对T.class;说T.class; : Illegal class literal for the type parameter T 。 我怎样才能得到T的课?

在.NET / C#中编写大量的logging(批量插入)

从.NET中执行批量插入到MS Access数据库的最佳方法是什么? 使用ADO.NET,花费一个多小时才能写出一个大的数据集。 请注意,在我“重构”之前,我的原始文章在问题部分既有问题也有答案。 我采取了伊戈尔·特曼的build议,并分两部分重写 – 上面的问题和我的答案。

@Transactional注释属于哪里?

如果将@Transactional放置在DAO类和/或它们的方法中,还是最好使用DAO对象来注释正在调用的Service类? 或者是否有意义的注释这两个“层”?

JSF控制器,服务和DAO

我正在尝试习惯JSF如何处理访问数据(来自spring的背景) 我正在创build一个维护用户列表的简单示例,我有类似的东西 <h:dataTable value="#{userListController.userList}" var="u"> <h:column>#{u.userId}</h:column> <h:column>#{u.userName}</h:column> </h:dataTable> 那么“控制器”有类似的东西 @Named(value = "userListController") @SessionScoped public class UserListController { @EJB private UserListService userListService; private List<User> userList; public List<User> getUserList() { userList = userListService.getUsers(); return userList; } } 而“服务”(虽然看起来更像是一个DAO) public class UserListService { @PersistenceContext private EntityManager em; public List<User> getUsers() { Query query = em.createQuery("SELECT u from User […]