在 \server\default\deploy 建立 MySQL-ds.xml:
<?xml version="1.0" encoding="UTF-8"?>
<datasources>
<local-tx-datasource>
<jndi-name>MyPIM</jndi-name>
<connection-url>jdbc:mysql://localhost:3306/pim</connection-url>
<driver-class>com.mysql.jdbc.Driver</driver-class>
<user-name>root</user-name>
<password>1234</password>
<exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter</exception-sorter-class-name>
<metadata>
<type-mapping>MySQL</type-mapping>
</metadata>
</local-tx-datasource>
</datasources>
將 MySQL JDBC 驅動 Jar 放入 \server\default\lib。
@Entity
@Table(name = "t_users")
public class User {
@Id
private int id;
private String name;
@Column(name = "passWord_md5")
private String passWord;
// Getter/Setter 略...
}
置於 META-INF/persistence.xml:
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="https://java.sun.com/xml/ns/persistence" version="1.0">
<persistence-unit name="myentity">
<jta-data-source>java:/MyPIM</jta-data-source>
<properties>
<property name="hibernate.hbm2ddl.auto" value="none"/>
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect"/>
</properties>
</persistence-unit>
</persistence>
jta-data-source 需與資料源 JNDI 名稱一致;persistence-unit name 稍後在 Session Bean 注入時使用。
@Stateless
public class UserBean implements UserBeanRemote {
@PersistenceContext(unitName = "myentity")
protected EntityManager em;
public String getPassWord() {
User user = em.find(User.class, 1);
return user.getPassWord();
}
}
InitialContext ctx = new InitialContext();
UserBeanRemote remote = (UserBeanRemote) ctx.lookup("MyEnterprise/UserBean/remote");
System.out.println(remote.getPassWord());
// 輸出: TaokQpoNJQb02eafO/JgYw==
unitName 對應 persistence-unit name。模組名/Bean名/remote。