原始JDBC、GUI和事务
我尝试使用多个DAO的当前地址DAO和CustomerDao创建一个服务,我知道我要创建一个跨这两个DAO的事务,例如:原始JDBC、GUI和事务,jdbc,guice,dao,Jdbc,Guice,Dao,我尝试使用多个DAO的当前地址DAO和CustomerDao创建一个服务,我知道我要创建一个跨这两个DAO的事务,例如: @Inject private CustomerDao customerDao; @Inject private AddressDao addressDao; Customer getCustomer(int id) { Customer customer = customerDao.getCustomer(id); customer.setAddress
@Inject
private CustomerDao customerDao;
@Inject
private AddressDao addressDao;
Customer getCustomer(int id) {
Customer customer = customerDao.getCustomer(id);
customer.setAddress(addressDao.getAddress(customer.getAddressId());
return customer;
}
在DAO里面我的东西看起来像那样
public class CustomerDaoJdbcImpl implements CustomerDao {
private static final Logger logger = LoggerFactory.getLogger(CustomerDaoJdbcImpl.class);
@Inject
private Database db;
public Customer getCustomer(int id) {
try(Connection connection = db.getConnection()) {
} catch(SQLException e) {
...
}
}
}
现在,由于我的连接被注入到dao中,我无法跨越事务。
而且我认为我没有弄清楚,可能需要一本好书来理解一切
首选的解决方案是什么?还是我做错了
目前我认为我已经制定了一个解决方案,但它缺少线程
我从以下网站获得了一些代码:
在这里:
目前我有一个数据库类,它从数据源提取连接,这个类被注入到DAO中,如果我对DAO或服务进行注释,连接将保持打开状态,直到我调用commit或rollback,但我不知道这是否是最好的模式,因为有些人建议在方法内部关闭连接