Eclipse下Hibernate入門(mén)
1.開(kāi)發(fā)環(huán)境
Eclipse 3.2+MySQL 4.0.16+Hibernate3.0
首先應(yīng)該安裝好Eclipse和MySQL,此外準(zhǔn)備好MySQL的JDBC Driver和Hibernate3.0,相關(guān)下載地址如下:
Eclipse SDK:
http://www.eclipse.org/downloads/index.php
MySQL及MySQL的JDBC Driver:
http://www.mysql.org
Hibernate:
http://www.hibernate.org
此外我還安裝了Eclipse的一個(gè)Hibernate插件:
Hibernate synchronizer
http://hibernatesynch.sourceforge.net
Plugin Search:
http://eclipse-plugins.2y.net/eclipse/search.jsp
Hibernate synchronizer插件的安裝和配置有問(wèn)題請(qǐng)直接Google。
在工程中其實(shí)只用到了Hibernate synchronizer插件的一部分功能,Hibernate依賴(lài)的相關(guān)jar包最好還是手動(dòng)添加,因?yàn)樽铋_(kāi)始用Hibernate synchronizer添加時(shí)總是發(fā)生錯(cuò)誤。
將下載的Mysql driver和Hibernate包解壓縮,我們需要的只是里面相關(guān)的jar,在Eclipse中新建Mysql_Driver和Hibernate兩個(gè)user library,將mysql-connector-java-3.0.15-ga-bin.jar加入Mysql_Driver中,將hibernate3.jar,
,log4j-1.2.11.jar,antlr-2.7.5H3.jar,asm.jar,asm-attrs.jar,cglib-2.1.2.jar,commons-collections-2.1.1.jar,commons-logging-1.0.4.jar,dom4j-1.6.1.jar,ehcache-1.1.jar,jta.jar加入到Hibernate中。
2.開(kāi)始
在Mysql中新建test數(shù)據(jù)庫(kù)(Mysql其實(shí)有個(gè)空的test數(shù)據(jù)庫(kù)),然后新建下面的Table
create table user (
id int(10) not null auto_increment primary key,
name varchar(20) not null,
password varchar(20) not null,
email varchar(50),
address varchar(100)
)type=innodb;
新建Java Project,將Mysql_Driver,Hibernate兩個(gè)user library添加到該工程的java build path中。
新建與數(shù)據(jù)表對(duì)應(yīng)的POJO類(lèi):User和Contact
/**
*
*
*/
package com.user;
/**
* @author lzy
*
*/
public class User{
private Integer id;
private String name;
private String password;
private Contact contact;
/**
* @return Returns the id.
*/
public Integer getId() {
return id;
}
/**
* @param id The id to set.
*/
public void setId(Integer id) {
this.id = id;
}
/**
* @return Returns the name.
*/
public String getName() {
return name;
}
/**
* @param name The name to set.
*/
public void setName(String name) {
this.name = name;
}
/**
* @return Returns the password.
*/
public String getPassword() {
return password;
}
/**
* @param password The password to set.
*/
public void setPassword(String password) {
this.password = password;
}
/**
* @return Returns the contact.
*/
public Contact getContact() {
return contact;
}
/**
* @param contact The contact to set.
*/
public void setContact(Contact contact) {
this.contact = contact;
}
}
/**
*
*/
package com.user;
/**
* @author lzy
*
*/
public class Contact {
private String email;
private String address;
/**
* @return Returns the address.
*/
public String getAddress() {
return address;
}
/**
* @param address The address to set.
*/
public void setAddress(String address) {
this.address = address;
}
/**
* @return Returns the email.
*/
public String getEmail() {
return email;
}
/**
* @param email The email to set.
*/
public void setEmail(String email) {
this.email = email;
}
}
之后可以用synchronizer插件生成Hibernate配置文件和映射文件(相關(guān)過(guò)程可以參考http://www.ideagrace.com/html/doc/2005/08/01/00315.html),不過(guò)映射文件必須稍作修改。
hibernate.cfg.xml <hibernate-configuration> <!-- local connection properties --> <!-- dialect for MySQL --> <property name="hibernate.show_sql">True</property> User.hbm.xml <?xml version="1.0"?> <hibernate-mapping package="com.user"> <property 3.測(cè)試 package com.user; import java.util.List; import org.hibernate.*; public class HibernateTest {
posted on 2005-12-10 12:50 all gone 閱讀(5035) 評(píng)論(3) 編輯 收藏 所屬分類(lèi): Java
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-configuration
PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN"
"
<session-factory >
<property name="hibernate.connection.url">jdbc:mysql://localhost/test</property>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.username"></property>
<property name="hibernate.connection.password"></property>
<!-- property name="hibernate.connection.pool_size"></property -->
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hibernate.transaction.factory_class">org.hibernate.transaction.JDBCTransactionFactory</property>
<mapping resource="User.hbm.xml"/>
</session-factory>
</hibernate-configuration>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD//EN"
"
<class
name="User"
table="user"
>
<id
name="Id"
type="integer"
column="id"
>
<generator class="native"/>
</id>
name="Name"
column="name"
type="string"
not-null="true"
length="20"
/>
<property
name="Password"
column="password"
type="string"
not-null="true"
length="20"
/>
<component name="Contact" class="Contact">
<property
name="Email"
column="email"
type="string"
not-null="false"
length="50"
/>
<property
name="Address"
column="address"
type="string"
not-null="false"
length="100"
/>
</component>
</class>
</hibernate-mapping>
添加一個(gè)測(cè)試類(lèi):HibernateTest
import java.util.ListIterator;
import org.hibernate.cfg.*;
public static void main(String[] args) throws HibernateException {
SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
//
//testInsert(sessionFactory);
//
testQuery(sessionFactory);
sessionFactory.close();
}
public static void testInsert( SessionFactory sessionFactory )throws HibernateException {
Session session = sessionFactory.openSession();
Transaction tx= session.beginTransaction();
User user = new User();
Contact contact=new Contact();
contact.setEmail("email");
contact.setAddress("address");
user.setName("caterpillar");
user.setPassword("password");
user.setContact(contact);
session.save(user);
tx.commit();
session.close();
System.out.println("OK!");
}
public static void testQuery( SessionFactory sessionFactory )throws HibernateException {
Session session = sessionFactory.openSession();
Transaction tx= session.beginTransaction();
User user = new User();
Contact contact=new Contact();
Query query=session.createQuery("from User as user");
//query.setCharacter(1, 'M');
List names =query.list();
for(ListIterator it=names.listIterator();it.hasNext();){
user= (User)it.next();
System.out.println("Id: " + user.getId());
System.out.println("name: " + user.getName());
System.out.println("password: " + user.getPassword());
if(user.getContact()!=null){
if(user.getContact().getEmail()!=null){
System.out.println("Email: " + user.getContact().getEmail());
}
if(user.getContact().getAddress()!=null){
System.out.println("Address: " + user.getContact().getAddress());
}
}
}
tx.commit();
session.close();
}
}