深圳网站制作招聘,wordpress能改什么用,公司注册网上核名官网,做数据权威的网站jboss4.2.3在花费大量时间在网上搜索之后#xff0c;尝试找到对几个项目使用Spring#xff0c;JPA和Hibenate的最有效方法#xff0c;我们得出了将在下面介绍的配置的结论。 将Spring与JPA和Hibernate集成包括几个步骤#xff1a; Spring容器的配置 JPA ORM层的配置 Hib… jboss4.2.3 在花费大量时间在网上搜索之后尝试找到对几个项目使用SpringJPA和Hibenate的最有效方法我们得出了将在下面介绍的配置的结论。 将Spring与JPA和Hibernate集成包括几个步骤 Spring容器的配置 JPA ORM层的配置 Hibernate Second lvl缓存的配置如果需要 请记住就数据源而言我们假设我们在J2EE容器中进行操作因此我们将要从JNDI查找现有数据源并使用它。 我们将要配置的文件如下所述 spring.xml文件用于驱动spring容器。 驱动JPA ORM层的persistence.xml文件 第二个lvl缓存文件例如JBoss TreeCache提供程序的treecache.xml 如果需要 下面是一个示例spring.xml文件 beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xmlns:phttp://www.springframework.org/schema/pxmlns:aophttp://www.springframework.org/schema/aop xmlns:contexthttp://www.springframework.org/schema/contextxmlns:jeehttp://www.springframework.org/schema/jee xmlns:txhttp://www.springframework.org/schema/txxmlns:taskhttp://www.springframework.org/schema/taskxsi:schemaLocationhttp://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsdhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsdhttp://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.0.xsdhttp://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsdhttp://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.0.xsd
context:component-scan base-packagecom.mycomp.mypackage /task:annotation-driven executormyExecutor schedulermyScheduler /task:executor idmyExecutor pool-size5 /task:scheduler idmyScheduler pool-size10 /tx:annotation-driven /bean identityManagerFactoryclassorg.springframework.orm.jpa.LocalContainerEntityManagerFactoryBeanproperty namepersistenceUnitName valueMyPersistenceUnit //beanbean idtransactionManagerclassorg.springframework.transaction.jta.JtaTransactionManagerproperty nametransactionManagerName valuejava:/TransactionManager /property nameuserTransactionName valueUserTransaction //bean/beans 这里需要注意的几件事 将contextcomponent-scan标记的base-package属性更改为项目的基本包以便扫描Spring组件服务DAO等 根据persistence.xml文件中的指示将entityManagerFactory bean的persistentUnitName属性的value属性更改为您的持久单元的名称 下面显示了一个示例persistence.xml文件 persistence xmlnshttp://java.sun.com/xml/ns/persistencexmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsdversion1.0persistence-unit nameMyPersistenceUnit transaction-typeJTAproviderorg.hibernate.ejb.HibernatePersistence/providerjta-data-sourcejava:/MyDataSource/jta-data-sourcepropertiesproperty namehibernate.dialect valueorg.hibernate.dialect.HSQLDialect/property namehibernate.hbm2ddl.auto valueupdate/property namehibernate.show_sql valuefalse/property namehibernate.transaction.manager_lookup_class valueorg.hibernate.transaction.JBossTransactionManagerLookup/!-- Uncomment below to use Hibernate second lvl cache --!--property namehibernate.cache.provider_class valueorg.hibernate.cache.TreeCacheProvider/property namehibernate.treecache.mbean.object_name valuejboss.cache:serviceTreeCache/property namehibernate.cache.use_second_level_cache valuetrue/property namehibernate.cache.use_query_cache valuetrue/property namehibernate.cache.use_structured_entries valuetrue/--/properties/persistence-unit/persistence 这里需要注意的几件事 持久性单元名称此处为MyPersistenceUnit必须与spring.xml文件中的值匹配 事务类型可以具有JTA或LOCAL值我们的假设是我们正在启用JTA的容器中进行部署因此我们可以利用全局事务JTA在任何其他情况下都应使用LOCAL值 如上所述我们假设我们正在J2EE容器中进行部署并且数据源在单独的文件中声明并且位于JNDI中因此我们指示JPA使用在特定JNDI名称下找到的数据源您应该根据您的数据源JNDI名称 我们要求Hibernate状态使用Hypersonic方言您应该根据数据源更改此值例如对于MySQL此值应为org.hibernate.dialect.MySQLDialect对于myISAM引擎或org.hibernate.dialect.MySQLInnoDBDialect对于InnoDB引擎 我们要求Hibernate状态查找我们的JTA事务管理器例如如果我们在JBoss内部部署则使用指定的值您应该根据您的环境更改此值 如果要启用Hibernate第二个lvl缓存只需取消注释指定的配置指令 下面显示了一个示例第二个lvl缓存JBoss树缓存– treecache.xml文件 serverclasspath codebase./lib archivesjboss-cache.jar, jgroups.jar /mbean codeorg.jboss.cache.TreeCache namejboss.cache:serviceTreeCachedependsjboss:serviceNaming/dependsdependsjboss:serviceTransactionManager/dependsattribute nameTransactionManagerLookupClassorg.jboss.cache.JBossTransactionManagerLookup/attributeattribute nameIsolationLevelREPEATABLE_READ/attributeattribute nameCacheModeLOCAL/attributeattribute nameUseReplQueuefalse/attributeattribute nameReplQueueInterval0/attributeattribute nameReplQueueMaxElements0/attributeattribute nameClusterNameTreeCache-Cluster/attributeattribute nameClusterConfigconfigUDP mcast_addr228.1.2.3 mcast_port48866 ip_ttl64ip_mcasttrue mcast_send_buf_size150000 mcast_recv_buf_size80000ucast_send_buf_size150000 ucast_recv_buf_size80000 loopbackfalse /PING timeout2000 num_initial_members3 up_threadfalsedown_threadfalse /MERGE2 min_interval10000 max_interval20000 /FD_SOCK /VERIFY_SUSPECT timeout1500 up_threadfalsedown_threadfalse /pbcast.NAKACK gc_lag50 retransmit_timeout600,1200,2400,4800max_xmit_size8192 up_threadfalse down_threadfalse /UNICAST timeout600,1200,2400 window_size100min_threshold10 down_threadfalse /pbcast.STABLE desired_avg_gossip20000 up_threadfalsedown_threadfalse /FRAG frag_size8192 down_threadfalse up_threadfalse /pbcast.GMS join_timeout5000 join_retry_timeout2000shuntrue print_local_addrtrue /pbcast.STATE_TRANSFER up_threadtruedown_threadtrue //config/attributeattribute nameFetchInMemoryStatetrue/attributeattribute nameInitialStateRetrievalTimeout20000/attributeattribute nameSyncReplTimeout20000/attributeattribute nameLockAcquisitionTimeout15000/attributeattribute nameEvictionPolicyClass/attributeattribute nameUseMarshallingfalse/attribute/mbean/server 这里需要注意的几件事 更新类加载器的路径以找到两个必需的文件jboss-cache.jarjgroups.jarJBoss树缓存才能正常工作 该文件将树缓存配置为JBoss MBean服务因此必须将其部署在JBoss应用服务器中其他配置类型不在本教程的讨论范围之内因此将不作进一步讨论。 有关在其他环境中配置JBoss树缓存的信息请参考相应的文档。 就是这样现在让我基于上述配置介绍一个示例DTO和DAO 首先是DTO类EmployeeDTO package com.mycomp.myproject.dto;import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;Entity
Table(name EMPLOYEE)
public class EmployeeDTO implements java.io.Serializable {private static final long serialVersionUID 7440297955003302414L;IdColumn(nameemployee_id)private long employeeId;Column(nameemployee_name, nullable false, length30)private String employeeName;Column(nameemployee_surname, nullable false, length30)private String employeeSurname;Column(namejob, length50)private String job;public EmployeeDTO() {}public EmployeeDTO(int employeeId) {this.employeeId employeeId; }public EmployeeDTO(long employeeId, String employeeName, String employeeSurname,String job) {this.employeeId employeeId;this.employeeName employeeName;this.employeeSurname employeeSurname;this.job job;}public long getEmployeeId() {return employeeId;}public void setEmployeeId(long employeeId) {this.employeeId employeeId;}public String getEmployeeName() {return employeeName;}public void setEmployeeName(String employeeName) {this.employeeName employeeName;}public String getEmployeeSurname() {return employeeSurname;}public void setEmployeeSurname(String employeeSurname) {this.employeeSurname employeeSurname;}public String getJob() {return job;}public void setJob(String job) {this.job job;}} 以下是用于访问Employee数据EmployeeDTO的DAO类 package com.mycomp.myproject.dao;import javax.annotation.PostConstruct;
import javax.persistence.EntityManagerFactory;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;import com.mycomp.myproject.dto.EmployeeDTO;Repository(employeeDAO)
public class EmployeeDAO extends JpaDAOLong, EmployeeDTO {AutowiredEntityManagerFactory entityManagerFactory;PostConstructpublic void init() {super.setEntityManagerFactory(entityManagerFactory);}} 如您所见EmployeeDAO类扩展了基本的DAO类JpaDao。 EmployeeDAO类可以包含有关EmployeeDTO对象的特定查询但是所有CRUD操作都可以从下面提供的基本DAO类JpaDao中进行处理 package com.mycomp.myproject.dao; import java.lang.reflect.ParameterizedType;
import java.util.List; import javax.persistence.EntityManager;
import javax.persistence.PersistenceException;
import javax.persistence.Query; import org.springframework.orm.jpa.JpaCallback;
import org.springframework.orm.jpa.support.JpaDaoSupport; public abstract class JpaDAOK, E extends JpaDaoSupport { protected ClassE entityClass; SuppressWarnings(unchecked) public JpaDAO() { ParameterizedType genericSuperclass (ParameterizedType) getClass() .getGenericSuperclass(); this.entityClass (ClassE) genericSuperclass .getActualTypeArguments()[1]; } public void persist(E entity) { getJpaTemplate().persist(entity); } public void remove(E entity) { getJpaTemplate().remove(entity); } public E merge(E entity) { return getJpaTemplate().merge(entity); } public void refresh(E entity) { getJpaTemplate().refresh(entity); } public E findById(K id) { return getJpaTemplate().find(entityClass, id); } public E flush(E entity) { getJpaTemplate().flush(); return entity; } SuppressWarnings(unchecked) public ListE findAll() { Object res getJpaTemplate().execute(new JpaCallback() { public Object doInJpa(EntityManager em) throws PersistenceException { Query q em.createQuery(SELECT h FROM entityClass.getName() h); return q.getResultList(); } }); return (ListE) res; } SuppressWarnings(unchecked) public Integer removeAll() { return (Integer) getJpaTemplate().execute(new JpaCallback() { public Object doInJpa(EntityManager em) throws PersistenceException { Query q em.createQuery(DELETE FROM entityClass.getName() h); return q.executeUpdate(); } }); }} 本教程的第二部分总结了我们将在此处讨论有关Spring服务创建的内容。 贾斯汀 翻译自: https://www.javacodegeeks.com/2010/05/jboss-42x-spring-3-jpa-hibernate.htmljboss4.2.3