当将jdbctemplate与spring一起使用时,我应该有一个基类吗?

发布于 2024-12-18 06:14:48 字数 1424 浏览 2 评论 0原文

我在春季从 hibernate 迁移到 jdbctemplate,需要一些指导。

我将创建一个 UserDao,然后创建一个 UserDaoImpl

在我的 servlet.xml 文件中,我创建了数据源 bean。

现在我正在读这个:http://static.springsource。 org/spring/docs/2.0.x/reference/jdbc.html

它说有一个私有方法:

private JdbcTemplate jdbcTemplate;

那么我可以像这样创建我的 UserDaoImpl 吗:

public class UserDaoImpl implements UserDao {
   private JdbcTemplate jdbcTemplate;

   public void setDataSource(DataSource dataSource) {
    this.jdbcTemplate = new JdbcTemplate(dataSource);
}

}
  1. 我需要在那里设置数据源吗?或者我可以使用某种注释吗?
  2. 我可以将此代码移动到像 GenericDao/GenericDaoImpl 这样的基类吗? (如果是这样,我是否将 jdbcTempalte 保留为私有或受保护?

使用 hibernate,我可以使用泛型在我的基类中添加基本查询,我猜我无法使用 jdbc 做到这一点,因为没有任何内容真正映射到我的实体正确吗?

更新

所以我的 GenericDaoImpl 看起来像:

public class GenericDaoImpl<T> extends JdbcDaoSupport implements GenericDao<T> {

    private JdbcTemplate jdbcTemplate;

 }

那么我的 UserDaoImpl 看起来像:

@Repository
public class UserDaoImpl extends GenericDaoImpl<User> implements UserDao {

}
  1. 我现在不能在我的方法中使用 this.jdbcTemplate 我该怎么办
  2. ? GenericDaoImpl 我可以有一个 setDataSource,因为它被 JdbcDaoSupport 标记为最终的。
    现在如何自动装配数据源?

I'm moving from hibernate to jdbctemplate in spring, and need some guidance.

I'm going to create a UserDao and then a UserDaoImpl.

In my servlet.xml file I have my datasource bean created.

Now I'm reading this: http://static.springsource.org/spring/docs/2.0.x/reference/jdbc.html

It says to have a private method:

private JdbcTemplate jdbcTemplate;

So can I create my UserDaoImpl like this:

public class UserDaoImpl implements UserDao {
   private JdbcTemplate jdbcTemplate;

   public void setDataSource(DataSource dataSource) {
    this.jdbcTemplate = new JdbcTemplate(dataSource);
}

}
  1. Do I need the set datasource there? Or can I use some kind of annotation?
  2. Could I move this code to a base class like GenericDao/ GenericDaoImpl?
    (if so, do I keep the jdbcTempalte as private or protected?

With hibernate I was able to add basic queries in my base class using generics, I'm guessing I can't do that with jdbc since nothing is really mapped to my entities correct?

update

So my GenericDaoImpl looks like:

public class GenericDaoImpl<T> extends JdbcDaoSupport implements GenericDao<T> {

    private JdbcTemplate jdbcTemplate;

 }

Then my UserDaoImpl looks like:

@Repository
public class UserDaoImpl extends GenericDaoImpl<User> implements UserDao {

}
  1. I can't use this.jdbcTemplate in my methods now? What do I do?
  2. In my GenericDaoImpl I can have a setDataSource as it is marked final by JdbcDaoSupport.
    How do I autowire the datasource now?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

无力看清 2024-12-25 06:14:48

假设您使用 Spring 3,可以使用 XML 配置或注释将数据源注入到父 DAO 类中。在 XML 中,“子”bean 可以使用 extends 关键字来使用超类的 dataSource

JdbcDaoSupport 是一个小型实用程序类,它捆绑了一些常见功能,例如 dataSourcejdbcTemplate 属性(以及其他一些事情)。无论如何,这只是人们为自己创建的便利小类之一,因此提供了它。

使用getDataSource() 检索数据源。您不需要需要 setDataSource()JdbcDaoSupport 中已有一个;你会采取什么不同的做法?如果您确实需要一个,那么您可能不想使用JdbcDaoSupport。除了简单的 getter/setter 之外,需要任何东西的情况相对不常见。

Assuming you're using Spring 3, the data source can be injected into a parent DAO class using either XML configuration or annotations. In XML the "child" beans can use the extends keyword to use the superclass's dataSource.

The JdbcDaoSupport class is a small utility class that bundles up some common functionality, like the dataSource and jdbcTemplate properties (and some other things). It's just one of those little convenience classes that people create for themselves anyway, so it's provided instead.

Use getDataSource() to retrieve the data source. You don't need a setDataSource(), there's aleady one in JdbcDaoSupport; what would you do differently? If you really need one, then you likely don't want to use JdbcDaoSupport. It's relatively unusual to need anything beyond a simple getter/setter.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文