在每一个SSH项目中,都会为持久层操作封装一套持久化操作接口,比如:
BaseRepository,BaseDao之类,并针对于这样的接口使用JPA,Hibernate等方式对接口进行相关实现,并能够将其封装成为一个公用的jar包(这里取名为go-persistence。当其它项目要想重用这些API里,只需要将这个包引用到工程中就可以了。下面是一个针对于接口的hibernate实现并使用了spring的HibenateDaoSupport类,部分代码如下
@Repository
@SuppressWarnings({"unchecked", "rawtypes"})
public class EntityRepositorySpringHibernate extends HibernateDaoSupport implements EntityRepository {
@Autowired
public void setSessionFactoryOverride(SessionFactory sessionFactory) {
super.setSessionFactory(sessionFactory);
}
@Override
public <T extends Entity> T save(T entity) {
this.getHibernateTemplate().saveOrUpdate(entity);
return entity;
}
}
在EntityRepositorySpringHibernate类中需要hibernate的SessionFactory工厂类,我们希望在spring容器启动的时候,跟据如下的applicationContexy配置文件中的sesssionFactory,注入到EntityRepositorySpringHibernate中。
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"
>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="configLocation">
<value>classpath:hibernate.cfg.xml</value>
</property>
<property name="configurationClass">
<value>org.hibernate.cfg.AnnotationConfiguration</value>
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">${jdbc.dialect}</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.jdbc.fetch_size">25</prop>
<prop key="hibernate.jdbc.batch_size">50</prop>
<!-- dev -->
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.format_sql">true</prop>
<prop key="hibernate.generate_statistic">false</prop>
<prop key="hibernate.cache.use_query_cache">false</prop>
<!--代表使用Hibernate的二级缓存-->
<prop key="hibernate.cache.use_second_level_cache">false</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
</props>
</property>
</bean>
</beans>
并在引用到persistence模块的工程中能够通过注解直接引用EntityRepositorySpringHibernate实例,如:
[code=”java”]
@Repository
public class ContactRepositoryImpl extends EntityRepositorySpringHibernate implements ContactRepository{
@Override
public void addContact(Contact contact) {
this.save(contact);
}
在自己写的jar包中使用spring注解方式,需要在导出工程为jar包时选中Add directory entries,如果没有勾选,那么spring将不扫描jar包中的注解。这时需要在配置文件中配置<bean>标签才行。
分享到:
相关推荐
springboot 项目编译后无法扫描加载到子jar包中的注解解决方法
spring.jar中包含除了 spring-mock.jar里所包含的内容外其它所有jar包的内容,因为只有在开发环境下才会用到spring-mock.jar来进行辅助测试,正式应用系统中是用不得这些类的。 除了spring.jar文件,Spring还包括有...
springmvc项目中如何加载jar包中的spring配置文件
公司的java项目中spring使用注解依赖jar
在日常开发中往往会对公共的模块打包发布,然后调用公共包的内容。...spring却无法扫描到相应的bean,下面这篇文章主要给大家介绍了关于Spring自动扫描时无法扫描jar包中bean的解决方法,需要的朋友可以参考下。
NULL 博文链接:https://konghaibo.iteye.com/blog/430146
Spring 3.1 jar包Spring 3.1 jar包Spring 3.1 jar包Spring 3.1 jar包Spring 3.1 jar包
主要介绍了解决SpringBoot jar包中的文件读取问题实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
学习spring4 ,关于aop 切面的讲解,用到的三个jar包。aopalliance.jar aspectjweaver-1.6.6.jar spring-aspects-4.0.6.RELEASE.jar
使用spring 4.2.5jar包 以及注解配置
Spring bean 一般通过配置文件和注解进行加载,如果要实现jar或class文件,动态实现spring bean 的动态加载,并通过UrlClassLoader完成jar和class文件的加载。可以实现jar的热替换。spring的bean动态加载则需要对...
Spring注解
在对struts2,hibernate以及spring进行整合时,我们...还有就是朋友们以后做项目时如果发现缺少jar包是,可以在spring的jar包中去找到他们,具体方法就是寻找类路径,spring的jar包实际上都是有很多模块组件的集合。
spring.jar spring.jar spring.jar spring.jar spring.jar spring.jar spring.jar spring.jar spring.jar spring.jar spring.jar spring.jar
spring aop jar 包
spring注解笔记spring注解笔记spring注解笔记spring注解笔记
mybatis与spring整合全部jar包(包括springmvc),包含 1、spring的jar包 2、Mybatis的jar包 3、Spring+mybatis的整合包。 4、Mysql的数据库驱动jar包。 5、数据库连接池的jar包。
Spring 3.2.0 jar包 从官网下载的,包含docs、libs以及schema,希望能帮助到小伙伴们
Spring注解大全,注解整理方式采用思维导图工具(XMind)整理,对注解按自己的方式进行了分类,并对所有的注解在备注中进行了解释说明;