JBoss 中配置数据源(datasource),及EntityManager的使用
来源:互联网 发布:网页淘宝怎么添加好友 编辑:程序博客网 时间:2024/05/22 04:08
前提:
EAP版本: EAP6.1
模式:standalone模式
数据库: Postgresql 9.3
数据源模式:NON-XA DataSource
正文:
① 将postgresql的jdbc包作成一个module部署到JBoss中。比如,我作成的module如下图所示:
具体的方法可以参考我另一篇博文: http://rainbow702.iteye.com/blog/2065353
② 修改 \jboss-eap-6.1\standalone\configuration下的standalone.xml文件,在其中的“<subsystem xmlns="urn:jboss:domain:datasources:1.1">”下增加一个新的datasource(系统默认自带一个ExampleDS)。下面是新增datasource之后的配置:
<datasources><datasource jndi-name="java:jboss/datasources/ExampleDS" pool-name="ExampleDS" enabled="true" use-java-context="true"><connection-url>jdbc:h2:mem:test;DB_CLOSE_DELAY=-1</connection-url><driver>h2</driver><security><user-name>sa</user-name><password>sa</password></security></datasource><datasource jndi-name="java:jboss/datasources/testDS" pool-name="testDS" enabled="true" use-java-context="true"><connection-url>jdbc:postgresql://localhost:5432/test</connection-url><driver-class>org.postgresql.Driver</driver-class><driver>postgresql</driver> <!-- 此处通过 postgresql 这个名字指定使用下面 drivers 中相应的 driver--><pool><min-pool-size>32</min-pool-size><max-pool-size>32</max-pool-size><prefill>true</prefill></pool><security><user-name>postgres</user-name><password>123456</password></security><validation><valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLValidConnectionChecker"/><validate-on-match>true</validate-on-match><background-validation>false</background-validation><exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLExceptionSorter"/></validation></datasource><drivers><driver name="postgresql" module="org.postgresql"/> <!-- 此处的 org.postgresql 即为上面①中创建的module。名称必须一致。--><driver name="h2" module="com.h2database.h2"><xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class></driver></drivers></datasources>
③ 经过上面两步,datasource就算配置好了。下面说明一下如何来创建EntityManager对象和相关的Entity实体类
④ 创建persistence.xml文件,内容如下:
<?xml version="1.0" encoding="UTF-8"?><persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"> <persistence-unit name="testUnit" transaction-type="JTA"> <jta-data-source>java:jboss/datasources/testDS</jta-data-source> <!--此处的 data-soruce 须与上面②中配置的名称保持一致--> <properties> <property name="hibernate.hbm2ddl.auto" value="none" /> <property name="hibernate.show_sql" value="true" /> </properties> </persistence-unit></persistence>
⑤ persistence.xml这份文件配置好了之后,应该将它放置在工程的什么位置呢?我一开始也不知道,后来,百度了一下,说是要放到 META-INF目录下,所以,我就将其放在了WebContent/META-INF下了,结果死活不起作用。后来又改成放到 WebContent/WEB-INF/lib下,还是不起作用。直至后来在官方找到了说明:
http://docs.oracle.com/javaee/6/tutorial/doc/bnbqw.html
上面链接的最后,写了persistence.xml可放置的路径。
然后,我改成放在"src/META-INF"(部署的时候会被部署至WEB-INF/class/META-INF)下之后,再重新启动EAP,终于可以了。
⑥ 声明与数据库中person表相应的Entity类
@Entity@Table(name = "person")@NamedQueries({@NamedQuery(name="user.checkLogin", query="select u from UserEntity u where u.name= :name and u.password=:password")})public class UserEntity implements Serializable {/** * serialVersionUID */private static final long serialVersionUID = 1L;@Column(name = "id")@Idprivate Integer id;@Column(name = "name")private String name;@Column(name="password")private String password;@Column(name = "nickname")private String nickName;public UserEntity() {}public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getNickName() {return nickName;}public void setNickName(String nickName) {this.nickName = nickName;}}
⑦这样,Entity可以通过EntityManager来维护了。下面,通过注解来获取EntityManager对象
public abstract class BaseDao<T> {private Class<T> entityClass; // 获取EntityManager,unitName的值最好明确写出来,且与上面④中定义的unitName保持一致@PersistenceContext(unitName="testUnit")protected EntityManager em;public BaseDao(Class<T> entityClass) {this.entityClass = entityClass;}public Class<T> getEntityClass() {return this.entityClass;}}
然后就可以使用这个EntityManager进行数据库操作了
public class LoginDao extends BaseDao<UserEntity> {public LoginDao() {super(UserEntity.class);}public boolean checkLogin(String userName, String password) {boolean res = false;// 使用em进行数据库的查询Query query = this.em.createNamedQuery("user_checkLogin", UserEntity.class);query.setParameter("name", userName);query.setParameter("password", password);List<UserEntity> resList = query.getResultList();res = resList.size() > 0;return res;}}
以上,完了。
PS:
① 请确保数据库的jdbc包与工程使用的JDK版本是相符合的,不然可能会报错。比如,我上面使用的jar包是基于JDK1.7及以上的,但我的工程使用的是JDK1.6,结果就报错了。换成1.7的就没有问题了。
② 可以参考官方文档: https://access.redhat.com/documentation/en-US/JBoss_Enterprise_BRMS_Platform/5/html/BRMS_Administrator_Guide/Configuring_a_Datasource_for_JBoss_Enterprise_Application_Platform_6.html
- JBoss 中配置数据源(datasource),及EntityManager的使用
- JBoss 中配置数据源(datasource)连接池
- 配置DataSource数据源 (JBOSS中配置数据源)
- struts中数据源(DataSource)的配置与使用
- Tomcat中数据源(DataSource)连接池的配置使用
- spring数据源配置及事务管理--entityManager
- JBoss中配置数据源
- 在JBoss中配置DB2的数据源
- 使用JBoss配置MySql的数据源
- JBoss 数据源的配置
- jboss数据源的配置
- 外部访问Jboss 5中配置的DataSource
- jboss-as-7.1.1.Final Oracle DataSource数据源配置
- jboss-as-7.1.1.Final 数据源 Oracle DataSource 配置
- Spring中配置DataSource数据源的几种选择
- JBOSS中配置MSSQL数据源
- JBOSS中配置JNDI数据源
- JBOSS中配置JNDI数据源
- 自定义的播放器
- CSR8670--初步认识
- java.lang.ClassNotFoundException: org.objectweb.asm.util.TraceClassVisitor
- android学习之路----开始之前
- android values文件夹
- JBoss 中配置数据源(datasource),及EntityManager的使用
- gSOAP中内存的使用
- android listview addHeaderView和addFooterView的注意事项
- Valgrind简单用法
- hadoop扩容和移除节点
- mysql 主从
- 看到 https://selfstore.io/ 这种在线出版网站想到的
- private protected public
- Linux下如何查看文件秒级修改及访问时间