如何使用hibernate与mysql数据库进行连接

如何使用hibernate与mysql数据库进行连接,第1张

方法/步骤

首先,我们把hibernate最基本的数据库连接,使用mysql。

见一个java工程,见一个包名为book, 在book的包下加一个java类Book.java,其代码如下: package book

public class Book { private Integer idprivate String nameprivate

String writerpublic Integer get hibernate最基本的数据库连接,使用mysql。

见一个java工程,见一个包名为“book”

然后在在book的包下加一个java类Book.java,其代码如下:

package book public class Book {private Integer id private

String name private String writer public Integer getId() {

return id }public void setId(Integer id) {this.id = id

}public String getName() {return name }public void

setName(String name) {this.name = name }public String

getWriter() {return writer }public void setWriter(String

writer) {this.writer = writer }}

温馨提示:下图仅供欣赏,不作为教学。

然后在book包下建一个book.hbm.xml,其代码如下:

<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC

"-//Hibernate/Hibernate Mapping DTD 3.0//EN"

"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping package="book"default-lazy="false">

<class name="Book"> <id name="id"> <generator

class="increment"/> </id> <property name="name"

></property> <property name="writer"

></property> </class> </hibernate-mapping>

温馨提示:下图仅供欣赏,不作为教学。

这个事与数据库里面的字段名形成映射关系,自己在mysql建立book表时与之对应,id是自增长的,

然后在工程的根目录下建一个hibernate.cfg.xml.其代码如下:<?xml version='1.0'

encoding='UTF-8'?> <!DOCTYPE hibernate-configuration PUBLIC

"-//Hibernate/Hibernate Configuration DTD 3.0//EN"

"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration> <session-factory>

<property

name="connection.driver_class">com.mysql.jdbc.Driver</property>

<property

name="connection.url">jdbc:mysql://localhost/mydb</property>

<property name="connection.username">root</property>

<property name="connection.password">root</property>

<property

name="dialect">org.hibernate.dialect.MySQLDialect</property>

<property name="show_sql">true</property> <!--

<property

name="hbm2ddl.auto">${hibernate.hbm2ddl.auto}</property>-->

<!-- <property

name="current_session_context_class">thread</property>-->

<mapping resource="book/Book.hbm.xml" />

</session-factory> </hibernate-configuration>

温馨提示:下图仅供欣赏,不作为教学。

这是连接mysql数据库的,用户名和密码改为你mysql数据库的

<property name="show_sql">true</property>这是在后台打印sql语句

<mapping resource="book/Book.hbm.xml" />这是找到映射文件。

温馨提示:下图仅供欣赏,不作为教学。

然后些个测试类:代码如下:

package test import org.hibernate.Session import

org.hibernate.SessionFactory import org.hibernate.Transaction

import org.hibernate.cfg.Configuration import book.Book public

class MainTest {/*** @param args*/public static void

main(String[] args) {try {Configuration cfg=new

Configuration()。configure();SessionFactory

sf=cfg.buildSessionFactory();Session session = sf.openSession();

Transaction ts=session.beginTransaction();Book b=new Book();

b.setName("hibernate");b.setWriter("div");session.save(b);//

Book b=(Book) session.get(Book.class,1);// if(b!=null){//

b.setName("xujun");// System.out.println("书名为:"+b.getName());//

System.out.println("作者为:"+b.getWriter());// session.delete(b);//

}ts.commit();session.close();sf.close();} catch

(Exception e) {e.printStackTrace();}}}

mysql表的字段如下:

把数据库建好后就可以测试。对了,关键的还没有说,还得把antlr.jar,cglib.jar,asm.jar,asm-attrs.jar,commons-colletions.jar,commons-logging.jar,ehcache.jar,

jta.jar,dom4.jar,log4.jar,hibernate3.jar引入到lib目录下

三种连接都是以连接MySQl为例。

<!-- JDBC驱动程序 -->

<property name="connection.driver_class">org.gjt.mm.mysql.Driver</property><property name="connection.url">jdbc:mysql://localhost:3306/struts?useUnicode=true&characterEncoding=GBK</property><!-- 数据库用户名 -->

<property name="connection.username">root</property><!-- 数据库密码 -->

<property name="connection.password">8888</property>

上面的一段配置,在c3p0和dbcp中,都是必需的,因为hibernate会根据上述的配置来生成connections,再交给c3p0或dbcp管理.但是,proxool则不能,虽然说服文档上说proxool也可以和hibernate结合,但我按照官方文档上的说明怎么配也出错,而且,到了sun和hibernat有的官方网站上问了几天,都没有一个人回复。后来我只能让proxool自身来生成连接,这在下面再讲。

1 C3P0

只需在hibernate.cfg.xml中加入

<property name="c3p0.min_size">5</property>

<property name="c3p0.max_size">30</property>

<property name="c3p0.time_out">1800</property>

<property name="c3p0.max_statement">50</property>

还有在classespath中加入c3p0-0.8.4.5.jar

2 dbcp

在hibernate.cfg.xml中加入

<property name="dbcp.maxActive">100</property>

<property name="dbcp.whenExhaustedAction">1</property>

<property name="dbcp.maxWait">60000</property>

<property name="dbcp.maxIdle">10</property>

<property name="dbcp.ps.maxActive">100</property>

<property name="dbcp.ps.whenExhaustedAction">1</property>

<property name="dbcp.ps.maxWait">60000</property>

<property name="dbcp.ps.maxIdle">10</property>

还有在classespath中加入commons-pool-1.2.jar 和commons-dbcp-1.2.1.jar.

3 proxool

在hibernate.cfg.xml中加入

<property name="proxool.pool_alias">pool1</property>

<property name="proxool.xml">ProxoolConf.xml</property>

<property name="connection.provider_class">net.sf.hibernate.connection.ProxoolConnectionProvider</property>

然后,在和hibernate.cfg.xml同一个目录下,加一个ProxoolConf.xml文件,内容为

<?xml version="1.0" encoding="utf-8"?>

<!-- the proxool configuration can be embedded within your own application's.

Anything outside the "proxool" tag is ignored. -->

<something-else-entirely>

<proxool>

<alias>pool1</alias>

<!--proxool只能管理由自己产生的连接-->

<driver-url>jdbc:mysql://localhost:3306/struts?useUnicode=true&characterEncoding=GBK</driver-url>

<driver-class>org.gjt.mm.mysql.Driver</driver-class>

<driver-properties>

<property name="user" value="root"/>

<property name="password" value="8888"/>

</driver-properties>

<!-- proxool自动侦察各个连接状态的时间间隔(毫秒),侦察到空闲的连接就马上回收,超时的销毁-->

<house-keeping-sleep-time>90000</house-keeping-sleep-time>

<!-- 指因未有空闲连接可以分配而在队列中等候的最大请求数,超过这个请求数的用户连接就不会被接受-->

<maximum-new-connections>20</maximum-new-connections>

<!-- 最少保持的空闲连接数-->

<prototype-count>5</prototype-count>

<!-- 允许最大连接数,超过了这个连接,再有请求时,就排在队列中等候,最大的等待请求数由maximum-new-connections决定-->

<maximum-connection-count>100</maximum-connection-count>

<!-- 最小连接数-->

<minimum-connection-count>10</minimum-connection-count>

</proxool>

</something-else-entirely>

并在classespath中加入proxool-0.8.3.jar

<!-- DataSource -->

以MySQL数据库为例: <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">

<property name="driverClass" value="com.mysql.jdbc.Driver" />

<property name="jdbcUrl" value="jdbc:mysql://远程数据库的地址:端口号/数据库名" />

<property name="user" value="远程数据库的用户名" />

<property name="password" value="远程数据库的密码" />

<property name="maxPoolSize" value="100" />

<property name="minPoolSize" value="10" />

<property name="initialPoolSize" value="1" />

<property name="maxIdleTime" value="60" /><!--单位秒-->

</bean>说白了,就是取得远程数据库的地址、端口号、用户名、密码就可以了。与连接本机区别不大。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/6920787.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-30
下一篇 2023-03-30

发表评论

登录后才能评论

评论列表(0条)

保存