Tag: dao

用于DAO和Web服务的数据库插入方法的Junit测试用例

我正在实施一个基于Web服务的大学管理系统。 该系统将某些课程添加到数据库中。 下面是我正在使用的代码。 Course.java public class Course { private String courseName; private String location; private String courseId; public String getCourseId() { return courseId; } public void setCourseId(String courseId) { this.courseId = courseId; } public String getCourseName() { return courseName; } public void setCourseName(String courseName) { this.courseName = courseName; } public String getLocation() { return location; […]

如何在java中为不同的数据库创建多个数据库连接

我有一个应用程序,它使用不同地理位置的四个数据库。 所有数据库都包含相同的表,并且只有数据库名称根据位置而不同。 我必须在我的应用程序中创建一些使用每个数据库中的数据的报告。 从java应用程序创建这些数据库连接的正确方法是什么?是否有适合我可以使用的任务的设计模式?

使用DAO模式的利弊

正如我在标题中提到的,我很想知道你(经验丰富的开发人员)对DAO模式的使用有何看法,特别是在Web应用程序中。 你发现了什么样的优势以及它的使用带来了什么后果?

处理服务层中的Daoexception

如果我的Dao层抛出Dao特定exception,那么在我的服务层处理它们是否会引起关注? 如果是,那么我应该将exception设为通用且独立于任何层来解决它,还是有其他方法? 同样的问题适用于服务层抛出的UI层处理exception。

使用多个数据源时Spring中存在多个实体管理器问题

我的applicationContext.xml有两个实体管理器,它们对应两个不同的数据库。 我可以使用entityManager1轻松查询database1 ,但是当我尝试使用entityManager2访问database2时,我没有得到任何结果。 我正在使用Spring + Hibernate + JPA。 这是我的ApplicationContext.xml characterEncoding UTF-8 characterEncoding UTF-8 classpath*:META-INF/persistence.xml classpath*:META-INF/persistence2.xml 这是我的服务层代码,可以与enityManager1一起enityManager1 : @Transactional public class StatesDAO implements IStatesDAO { private EntityManager em; @PersistenceContext(unitName = “PU1”) public void setEntityManager(EntityManager em) { this.em = em; } private EntityManager getEntityManager() { return em; } @SuppressWarnings(“unchecked”) public List findAll() { logger.info(“finding all States instances”); […]

如何使用JDBC和连接池实现DAO管理器?

我的问题如下。 我需要一个类作为Web系统中数据库连接的单点,以避免一个用户有两个打开的连接。 我需要它尽可能优化,它应该管理系统中的每个事务。 换句话说,只有该类应该能够实例化DAO。 为了使它更好,它还应该使用连接池! 我该怎么办?

在以下示例中使用抽象工厂而不是工厂方法有什么好处?

在写这个问题之前,我读了以下参考文献: 工厂方法与抽象工厂 抽象工厂与工厂方法(范围) 抽象工厂,工厂方法,生成器 工厂,抽象工厂和工厂方法 抽象工厂模式与工厂方法的区别 我看到像我这样的很多人都难以“掌握”抽象工厂和工厂模式之间的具体差异。 我不熟悉设计模式,我遇到了这个例子http://www.oracle.com/technetwork/java/dataaccessobject-138824.html ,我正在努力深化这个主题。 通过比较,我看到3 DTO我们有: 1)抽象工厂 1个抽象类(有3个抽象方法和3个switch-cases); 持久化类型的3个工厂类(每个类有3种获取DTO DAO的方法) 3个接口和9个DAO。 2)工厂方法: 3个工厂类,每个接口一个(每个有3个开关盒); 可能我可以创建3个超类来扩展DAO类而不重复代码,例如连接到数据库的代码; 3个接口和9个DAO。 从代码数量的角度来看,我没有看到任何实质性的差异。 如果您需要添加新的持久性支持或新的接口/ DTO,则差异很小(并且是互补的)。 从客户的角度来看: 1)抽象工厂: public static final int PERSISTENCE_TYPE = DAOFactory.ORACLE; DAOFactory daoFactory = DAOFactory.getDAOFactory(PERSISTENCE_TYPE); CustomerDAO cDAO = daoFactory.getCustomerDAO(); AccountDAO aDAO = daoFactory.getAccountDAO(); OrderDAO oDAO = daoFactory.getOrderDAO(); 2)工厂方法: public static final int PERSISTENCE_TYPE = […]

JPA – FindByExample

有没有人有一个很好的例子来说明如何在JPA中执行findByExample,它将通过任何实体类型的reflection在genericsDAO中工作? 我知道我可以通过我的提供商(Hibernate)来做,但我不想打破中立…… 看起来像标准API可能是要走的路……但我不知道如何处理它的reflection部分。

服务和DAO层的责任和使用

我目前正在使用带有Spring插件和hibernate的Struts2开发一个Web应用程序,当我查看在线示例时,我看到了Service和DAO层的使用,现在我看到了Service和数据访问对象层的真正用途是什么? 如果服务层只是调用DAO层的方法来执行CRUD操作。 直接调用DAO图层方法是不明智的? 让我们说这个Dao和服务层的例子 PeopleService @Transactional public class PeopleService { private PeopleDao pDao; public PeopleDao getPDao() { return pDao; } public void setPDao(PeopleDao peopleDao) { this.pDao = peopleDao; } public void createPerson(String name){ pDao.createPerson(name); } public List getPeople(){ return pDao.getPeople(); } } PeopleDao public class PeopleDao { private SessionFactory sessionFactory; public void setSessionFactory(SessionFactory sessionFactory) { […]

hibernate删除错误:批量更新返回意外行计数

我在下面写了这个方法,假设从数据库中删除一个成员记录。 但是当我在我的servlet中使用它时会返回错误。 会员道教class public static void deleteMember(Member member) { Session hibernateSession = HibernateUtil.getSessionFactory().getCurrentSession(); Transaction tx = hibernateSession.beginTransaction(); hibernateSession.delete(member); tx.commit(); } 控制器部分 if(delete != null) { HttpSession httpSession = request.getSession(); Member member = (Member) httpSession.getAttribute(“member”); MemberDao.deleteMember(member); nextPage = “ledenlijst.jsp”; } HTTP状态500 org.hibernate.StaleStateException: Batch update returned unexpected row count from update [0]; actual row count: 0; expected: […]