Java 如何使用JDBC处理DAO之间的交互?
我在弄清楚如何使用JDBC处理应用程序上实体之间的交互时遇到了一个问题。以前我使用过Hibernate,但这不是一个真正的问题,因为几乎所有问题都是自动或通过注释解决的。现在,使用JDBC并没有这样的魔力 假设我有这样的课程:Java 如何使用JDBC处理DAO之间的交互?,java,jdbc,dao,Java,Jdbc,Dao,我在弄清楚如何使用JDBC处理应用程序上实体之间的交互时遇到了一个问题。以前我使用过Hibernate,但这不是一个真正的问题,因为几乎所有问题都是自动或通过注释解决的。现在,使用JDBC并没有这样的魔力 假设我有这样的课程: class A{ private String name; private List<B> bs; private C c; } class AService{ private ADao aDao; void save
class A{
private String name;
private List<B> bs;
private C c;
}
class AService{
private ADao aDao;
void save(A a){
aDao.persist(a);
}
}
class ADao{
void persist(A a){
//open connection and autocommit false
//persist C
//persist B's
//persist A
//commit
}
}
A类{
私有字符串名称;
私人名单;
私人C C;
}
类别A服务{
私人阿多阿多;
作废保存(A){
aDao.persist(a);
}
}
阿多类{
(A){
//打开连接和自动提交错误
//持久性C
//B's
//坚持
//承诺
}
}
B和C有各自的DAO和服务。现在,据我所知,你们不应该把刀和其他刀混在一起。。。这意味着我不应该在ADao中使用BDao和/或CDao,而应该使用他们的服务 如果这是真的,那么我该如何实现期望的行为呢?我可以在事务上持久化多个实体?服务不应该知道任何关于连接或其他的。。。这些是我无法传播到业务层的详细实现 到目前为止我还没有在网上找到任何东西。。。所有的例子都是一个实体,我唯一能想到的解决方案就是在我的另一个DAO上复制代码
我真的很感激你能提供的任何帮助,以及阅读有关这方面的书籍或好材料。我找到了一些关于jdbc的书。。但坦率地说,他们没有那么好。。。其中一些甚至将DAO传播到表示层..:/ 您愿意使用EJB吗?它们可以很好地处理业务层逻辑(如DB START..ejb function..DB COMMIT)。我知道它们已经过时了,但就我个人而言,我觉得它们有一席之地
事务是一个业务层问题,而不是DAO/数据层问题。没有DAO不能处理多个实体的实践。如果DAO应该处理一个和一个实体,那么它应该只接受一个实体,而不是像您的示例中那样的嵌套实体树 所以你有两个选择
除非您的项目包含很少的实体,或者您只是在玩jdbc,否则我建议您使用JPA/Hibernate之类的工具。我知道JPA是一种痛苦,但简单的jdbc将是一场噩梦。谷歌Hi的第一个结果,我不想使用框架/库来解决设计问题。我宁愿学习如何正确地解决它。关于你的最后一句话,你能提供一本书、一个链接或一个例子来教育我如何解决这个问题吗?EJB是Java的标准部分(Javee,而不是JavaSE)。您已经能够在JDK中使用它们,而无需添加库。他们为你处理交易。一个好的开始是或者。但是,这并不能回答我的问题。无论如何,谢谢你。你能详细解释一下为什么这不是一个答案吗?我是新来这里的,已经获得了惊人数量的反对票,所以我想做得更好。