我正在学习JdbcTemplate和NamedParameterJdbcTemplate的奇观。 我喜欢我所看到的,但有没有简单的方法来查看它最终执行的底层SQL? 我想看到这是为了debugging目的(例如为了debugging在外部工具中产生的SQL)。
对于一个新的项目来说,JPA总是处理关系数据的推荐工具,或者Spring JdbcTemplate是一个更好的select吗? 您的回复中需要考虑的一些因素: 新的数据库模式vs预先存在的模式和表 开发人员的专业水平 易于与数据caching层集成 性能 还有其他相关因素需要考虑?
使用现代date调用存储过程的正确方法是什么(大约2012年)Spring JDBC模板? 说,我有一个声明IN和OUT参数的存储过程,如下所示: mypkg.doSomething( id OUT int, name IN String, date IN Date ) 我遇到了基于CallableStatementCreator的方法,我们必须显式注册IN和OUT参数。 考虑JdbcTemplate类中的以下方法: public Map<String, Object> call(CallableStatementCreator csc, List<SqlParameter> declaredParameters) 当然,我知道我可以像这样使用它: List<SqlParameter> declaredParameters = new ArrayList<SqlParameter>(); declaredParameters.add(new SqlOutParameter("id", Types.INTEGER)); declaredParameters.add(new SqlParameter("name", Types.VARCHAR)); declaredParameters.add(new SqlParameter("date", Types.DATE)); this.jdbcTemplate.call(new CallableStatementCreator() { @Override CallableStatement createCallableStatement(Connection con) throws SQLException { CallableStatement stmnt = con.createCall("{mypkg.doSomething(?, ?, ?)}"); stmnt.registerOutParameter("id", […]
我正在浏览Spring支持的数据访问技术,我注意到它提到了多种select,我不确定它们之间的区别: Spring-DAO( http://docs.spring.io/spring/docs/2.0.8/reference/dao.html ) Spring-ORM( http://docs.spring.io/spring/docs/3.0.x/spring-framework-reference/html/orm.html ) Spring-JDBC( http://docs.spring.io/spring/docs/3.0.x/spring-framework-reference/html/jdbc.html ) 据我所知,Spring JDBC提供了用于通过简单的旧方法来减less访问数据库的样板代码的模板 – 您可以编写自己的SQL查询。 Spring-ORM为通过ORM技术访问数据库提供了简化模板,如Hibernate,My(i)Batis等 Spring-DAO按照Spring的网站: Spring中的数据访问对象(Data Access Object,DAO)支持旨在使得JDBC,Hibernate或JDO等数据访问技术以一致的方式工作 我对ORM vs JDBC有点清楚,因为它们是以不同的方式访问数据库。 但是Spring-DAO只是简单的混淆! 任何人都可以澄清这三者之间究竟有什么不同? 哪种情况下应该首选? 此外,还有另一个项目Spring-DATA也可用( http://projects.spring.io/spring-data/ )现在,它是一种由Spring支持的所有数据访问技术的父项目,还是只是一个新的Spring-DAO的名字?
我想知道当你使用@Transactional注解一个方法时究竟发生了什么? 当然,我知道Spring将在一个事务中包装这个方法。 但是,我有以下怀疑: 我听说Spring创build一个代理类 ? 有人可以更深入地解释这一点。 那个代理类实际上驻留了什么? 实际上课会发生什么? 我怎样才能看到Spring创build的代理类 我还在Spring的文档中看到: 注意:由于这个机制是基于代理的,所以只有通过代理进入的“外部”方法调用才会被拦截 。 这意味着即使被调用的方法标记为@Transactional ,“自调用”(即调用目标对象的其他方法的目标对象内的方法)也不会导致实际的事务处理。 资料来源: http : //static.springsource.org/spring/docs/2.0.x/reference/transaction.html 为什么只有外部方法调用将在事务中,而不是自调用方法?