spring JPA hibernate 多库配置

spring JPA hibernate 多库配置,第1张

多个数据库配置其实很简单,主要是看是否需要全局事务,EJB这种分布式的架构本身就有JTA的概念,不过在Hibernate里面还是需要依赖外部JTA实现,有两种选择,一种是依赖支持JTA的容器,例如jboss,glassfish等,还有一种是使用开源的jta实现,例如Atomikos,jotm等,个人建议你不要依赖容器。

给你一个参考地址

>

如果我们想拓展spring data jpa的CrudRepository或PagingAndSortingRepository,加入我们自己的database *** 作。分3个级别的拓展:

1、继承CrudRepository或PagingAndSortingRepository,在继承的就扣定义findBy类似的方法。这种方式只能做到最简单的拓展,毕竟一个方法名能表达的意思有限,(就好比我们说一句话能表达的意思也很有限)。

2、使用@Query注解继承接口里面的方法,定义方法要执行的sql,注意方法的每个参数对应sql里的“1”、“2”、……参数。这种方法比上一种方法能完成更多的拓展,可以连表,定义子查询等,但是还是只能执行一个sql语句。

3、使用@NoRepositoryBean,定义非仓库bean:

[java] view plain copy

@NoRepositoryBean

interface BaseRepository<T> extends CrudRepository<T, Long> {

long customMethod();

}

实现上面的接口里定义的方法

[java] view plain copy

/

@author Oliver Gierke

@soundtrack Elen - Nobody Else (Elen)

/

class ExtendedJpaRepository<T> extends SimpleJpaRepository<T, Long> implements BaseRepository<T> {

/

Creates a new {@link ExtendedJpaRepository} for the given {@link JpaEntityInformation} and {@link EntityManager}

@param entityInformation must not be {@literal null}

@param entityManager must not be {@literal null}

/

public ExtendedJpaRepository(JpaEntityInformation<T, > entityInformation, EntityManager entityManager) {

super(entityInformation, entityManager);

}

/

(non-Javadoc)

@see examplespringdatajpacustomallBaseRepository#customMethod()

/

@Override

public long customMethod() {

//do some database operation

return 0;

}

}

最后定义我们的仓库bean接口,让这个接口继承我们新的仓库接口而不是CrudRepository或PagingAndSortingRepository

[java] view plain copy

public interface UserRepository extends BaseRepository<User> {}

第三种方式的拓展就非常强大了,在一个方法里面可以想干什么就干什么了,执行多个语句,执行存储过程等。另外上述三种方式是可以结合在一起使用的,并不冲突。

启动项目时所出现的JPA异常:

情况如下图所示:

查看度娘之后,发现此异常是 JPA实体类没有被扫描到。

随后查看了自己的Dao层文件,发现自己Dao层文件注解全是 @Repository ,而JPA注解则是 @NoRepositoryBean

修改完成,重启项目成功。

其它更多的情况可以参考一下这篇博客: >

cannot convert value of type

[javalangString] to required type

[orgspringframeworkormjpavendorDatabase] for property 'database': no matching editors or conversion strategy found

at orgspringframeworkcontextannotationCommonAnnotationBeanPostProcessorpostProcessA

你数据源配置的有问题吧,怎么会有类型转换异常呢?

以上就是关于spring JPA hibernate 多库配置全部的内容,包括:spring JPA hibernate 多库配置、BEAN协议属于什么局域网络、spring jpa dao是怎么自动实现的等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9312688.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存