hibernate最新下载地址:http://jaist.dl.sourceforge.net/project/hibernate/hibernate4/4.3.6.Final/hibernate-release-4.3.6.Final.zip
示例只提供一个表的增删改查操作.
一,基础
导入lib下\required的类包.
创建类:com.hbm.Dbcon, 主要代码:private int id; private String userName; private String userPW; private String url; private String dialect;
还有相应的get/set方法.
创建hbm.cfg.xml和Dbcon.xml文件.同时复制资源文件:project\hibernate-core\src\main\resources\org\hibernate文件夹下hibernate-configuration-3.0.dtd和hibernate-mapping-3.0.dtd到com.hbm下.
形成的目录结构:
其中Test为测试类,后面会详细讲到.
Dbcon.xml文件的内容:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"src/com/hbm/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.hbm.Dbcon" table="dbcon">
<id column="id" name="id" />
<property name="userName" column="userName" type="java.lang.String" />
<property name="userPW" column="userPW" type="java.lang.String" />
<property name="url" column="url" type="java.lang.String" />
<property name="dialect" column="dialect" type="java.lang.String" />
</class>
</hibernate-mapping>
hbm.cfg.xml文件的内容:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"src/com/hbm/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<property name="hibernate.bytecode.use_reflection_optimizer">false</property>
<property name="hibernate.connection.driver_class">net.sourceforge.jtds.jdbc.Driver</property>
<property name="hibernate.connection.username">sa</property>
<property name="hibernate.connection.password">sa</property>
<property name="hibernate.connection.url">jdbc:jtds:sqlserver://localhost/hbm;charset=gb2312;instance=SQLEXPRESS</property>
<property name="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</property>
<property name="show_sql">true</property>
<property name="hibernate.c3p0.max_size">2</property>
<property name="hibernate.c3p0.min_size">5</property>
<property name="hibernate.c3p0.timeout">5000</property>
<property name="hibernate.c3p0.max_statements">100</property>
<property name="hibernate.c3p0.acquire_increment">2</property>
<property name="hibernate.c3p0.validate">false</property>
<property name="checkoutTimeout">2000</property>
<mapping resource="com\hbm\Dbcon.xml" />
</session-factory>
</hibernate-configuration>
jdbc的驱动为jtds-1.2.8.jar最新下载地址:http://sourceforge.net/projects/jtds/files/?source=navbar ,并导入.
同时,在数据库中新建表,表名:dbcon
建表语句:
CREATE TABLE hbm.dbo.dbcon (
id int NOT NULL,
userName nchar(10),
userPW nchar(10),
url nchar(100),
dialect nchar(100),
CONSTRAINT PK_dbcon PRIMARY KEY (id)
);
CREATE INDEX DBCON_INDEX ON hbm.dbo.dbcon ();
CREATE INDEX PK_dbcon ON hbm.dbo.dbcon (id);
二,增删改查
新建类,com.hbm.Test
main方法内容:
public static void main(String[] args) {
Configuration configuration = new Configuration();
configuration.configure("com/hbm/hbm.cfg.xml");
StandardServiceRegistryBuilder builder = new StandardServiceRegistryBuilder();
builder.applySettings(configuration.getProperties());
StandardServiceRegistry standardServiceRegistry = builder.build();
SessionFactory sessionFactory = configuration.buildSessionFactory(standardServiceRegistry);
Session session = sessionFactory.openSession();
Test test = new Test();
Dbcon dbcon = test.insert(session);
System.out.println(dbcon.getUserPW());
test.update(session, dbcon);
System.out.println(dbcon.getUserPW());
List<Dbcon> cons = test.select1(session);
System.out.println(cons == null ? -1 : cons.size());
test.delete(session, dbcon);
List<Dbcon> afterDelete = test.select1(session);
System.out.println(afterDelete == null ? -1 : afterDelete.size());
session.flush();
session.clear();
session.close();
sessionFactory.close();
}
所有import的类,都是org.hibernate开头的类.
insert,update,select,delete方法:
private Dbcon insert(Session session) {
Transaction transaction = session.getTransaction();
transaction.begin();
Dbcon mssql = new Dbcon();
mssql.setId(1);
mssql.setDialect("mssql");
mssql.setUrl("url");
mssql.setUserName("sa");
mssql.setUserPW("sa");
session.save(mssql);
transaction.commit();
return mssql;
}
private Dbcon update(Session session, Dbcon con) {
Transaction transaction = session.getTransaction();
transaction.begin();
con.setUserPW("sa2");
session.update(con);
transaction.commit();
return con;
}
private void delete(Session session, Dbcon con) {
Transaction transaction = session.getTransaction();
transaction.begin();
session.delete(con);
session.delete(con);
}
private List<Dbcon> select1(Session session) {
Query query = session.createQuery("FROM Dbcon as dbcon WHERE id>0 AND dialect=:dialect");
query.setString("dialect", "mssql");// 将查询语句中"dialect=:dialect"中后面的:"=:dialect"的dialect具体的值设为:mssql
List<Dbcon> cons = query.list();
return cons;
}
其它查询方式
private List<Dbcon> select2(Session session) {
Criteria c = session.createCriteria(Dbcon.class);
c.add(Restrictions.eq("dialect", "mssql"));// eq是等于,gt是大于,lt是小于,or是或
c.add(Restrictions.gt("id", 0));
List<Dbcon> cons = c.list();
return cons;
}
private List<Dbcon> select3(Session session) {
SQLQuery query = session.createSQLQuery("SELECT * FROM dbcon WHERE id>? AND dialect=?");
query.addEntity(Dbcon.class);
query.setInteger(0, 0);
query.setString(1, "mssql");
List<Dbcon> cons = query.list();
return cons;
}