我不是太懂,但是实在是急,说得对与错请您包含,只要点事例代码!
我不是太懂,但是实在是急,说得对与错请您包含,只要点事例代码!
虽然我还没学EJB,但我在网上搜索到一堆关于这方面的问题及答案.......
三、建立数据库连接
EJB 容器维护数据库的连接池,这个连接池对 EJB 组件来说是透明的。当EJB 组件申请一个连接时,EJB 容器从连接池中提取一个连接并分配给组件。由于EJB 容器只是分配一个连接给 EJB 组件,所以组件很快就获得这个连接并连接数据库。数据库调用之后,组件就可以释放连接,这样它又可以快速申请到另一个连接。又因为一个组件只占用这个连接很短的时间,从而同一个连接可以被多个组件使用。
组件不是通过数据库的绝对名来连接数据库,而是用逻辑名连接到数据库, 即用 JNDI lookup 来获得数据库连接,例如:在下面例子中的AccountEJB 类中,连接数据库有以下几个步骤:
1、指定数据库的逻辑名:
private String dbName = "java:comp/env/jdbc/AccountDB";
2、获得数据源:
InitialContext ic = new InitialContext();
DataSource ds = (DataSource) ic.lookup(dbName);
3、从数据源得到数据库连接:
Connection con = ds.getConnection();
这种间接的连接数据库有以下几个优点:
· 可以在具有不同的数据库名的不同环境中部署相同的 EJB 组件。
· 可以在多个应用中重用EJB 组件。
· 可以集成 EJB 组件到运行在分布环境的应用系统中。
另外,EJB 规范没有要求 J2EE的实现支持某一个特别类型的数据库系统,因此EJB 组件可以连接到不同的数据库系统。
我这里用JBOSS的EJB容易做一个例子
你得做一个XML文档,里面声明了数据源的一些配置
[CODE]
<!--文件名:mssql-ds.xml-->
<datasources>
<local-tx-datasource>
<jndi-name>MSSQLDS</jndi-name>
<connection-url>jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=testEJB</connection-url>
<driver-class>com.microsoft.jdbc.sqlserver.SQLServerDriver</driver-class>
<user-name>sa</user-name>
<password>123456</password>
<!-- sql to call when connection is created
<new-connection-sql>some arbitrary sql</new-connection-sql>
-->
<!-- sql to call on an existing pooled connection when it is obtained from pool
<check-valid-connection-sql>some arbitrary sql</check-valid-connection-sql>
-->
<!-- corresponding type-mapping in the standardjbosscmp-jdbc.xml (optional) -->
<metadata>
<type-mapping>MS SQLSERVER2000</type-mapping>
</metadata>
</local-tx-datasource>
</datasources>[/CODE]
以上的一些参数,你可以换成你自己想要的参数,比如connection-url,我这里用的是直连,如果你的JDBC:ODBC的话,也可以换成你自己的URL,用户名密码,你自己填 ,如果密码为空,就留空,关键的一点,jndi-name是EJB找到这个数据源的标志,这个名字你要记住,你可以换成任何你自己喜欢的名字
然后就可以用实体BEAN来访问它了
实体BEAN的配置文件如下
persistence.xml
[CODE]<persistence>
<persistence-unit name="hadeslee">
<jta-data-source>java:/MSSQLDS</jta-data-source>
<properties>
<property name="hibernate.hbm2ddl.auto" value="create-drop"/>
</properties>
</persistence-unit>
</persistence> [/CODE]
然后你可以用JNDI获得DataSource
不过既然你都用了EJB了,就干脆把你的表映射成一个个EntityBean多好
如果你是初学者的话,建议先把JAVA SE的一些基础学好再来搞EJB
我不是叫他把URL改为jdbc:odbc的格式吗