首先,新建Project以后,选择Java——Java应用程序:
然后添加类库:鼠标右键点击那个咖啡图标的项目——属性:
接下来,选择
添加 JAR/文件夹依次添加其他必须的库:
1、
ejb3-persistence.jar (这个库额外从网上下载)
2、
hibernate-jpa-2.1-api-1.0.0.Final.jar (这个库在自己下载解压的hibernate文件夹的lib——release——required文件夹里面,文中示例是拷贝到下载文件夹下的)
3、
my-sql-connector-java-5.1.39-bin.jar(这个是安装MySQL的时候,勾选Connector.J 5.1附带安装上的,Jar文件在相应的文件夹里面。)
接下来就依次讲解各部分代码:
MainClass.java主要就是拿来运行Test的。
StudentTest.java里面写了一些启动hibernate,新建表格,并往里面插入数据、检索数据的代码。
而Student.java就是基础类,定义了一个数据表的表头。其实也就是用java语言的格式来定义一个数据库,非常方便。
Student.hbm.xml是配置文件,告诉Hibernate我该去哪个Java文件里面把MySQL返回的数据映射到Object。
最后hibernate.cfg.xml是数据库连接的配置文件,告诉系统我该去连接哪个数据库,用户名和密码分别是啥,有没有啥额外的连接要求,是否开启日志等等。
说了这么多,感觉很麻烦啊,为啥不Send一句SQL语句然后再把recv的数据用字符串分析来区分开呢?因为hibernate就是不想这么做啊!(大误……)
我个人理解,首先这样是方便迁移吧。大家可以先看看这个Student类:
我个人理解,首先这样是方便迁移吧。大家可以先看看这个Student类:
public class Student implements Serializable {
}
| 可以看到这个类是个 非常纯粹的Java类。集成 到自己写的Java程序里面 非常方便,当Hibernate 取出数据库中的一行的时 候,就会生成这样一个 Student类,然后你就可 以把这个类导入自己的工 程项目里面来用了。 |
好的,我们建立了这样一个Student类
接下来我们得对这个类进行“映射”。为何要映射?这里搜集了网上的一些说法:有说是因为xml文件方便配置,毕竟java文件一但编译成class了以后就不能再方便地改了(源文件不再自己手里,或者使用者只会用却没编程技术)。——但是我还是有个疑问,只改xml文件不改java类真的行吗?又有说法是因为xml才是标准,大家都要遵循……但是遵循什么,是为了分离而分离吗?
;、返回的^%$#类型是int类型。
于是如何映射呢?我们建立一个:
Student.hbm.xml文件
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping SYSTEM "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
</hibernate-mapping>
| |
然后我们得对Hibernate进行配置,告诉它我们连接哪个数据库,用户名和密码都是啥:
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
<hibernate-configuration>
<session-factory>
</session-factory>
</hibernate-configuration>
| |
我们开始写测试的类StudentTest.java:
在这个类中,我们进行几个功能(大家可以按照需要来增减):
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.boot.registry.StandardServiceRegistryB
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.tool.hbm2ddl.SchemaExport;
public class StudentTest {
//选择用哪个目录下的hibernate.hbm.xml配置文件
}
| 里面没有Student类。我猜想Hiber- nate可能会把注册在配置文件里面 的所有表头都个给在数据库里面建 立新表。 接着get方法通过Session获取 了表里面的第一个元素,然后对这 个元素的Name进行了修改,修改 成了list。 而add方法在表里面新添加一 行元素。可以看到新加元素比较简 单,直接new一个Student,然后 在session里面save就可以了。 |
最后是MainClass.java。用来执行我们写的StudnetTest.java
很简单:
public class MainClass {
}
|
当然为了能够在正确的schema(数据库)中创建表,我们也写了一个配置文件:
orm.xml
<?xml version="1.0" encoding="UTF-8"?>
<entity-mappings
xmlns="http://java.sun.com/xml/ns/persistence/orm"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/orm http://java.sum.com/xml/ns/persistence/orm_1_0.xsd"
version="1.0">
<persistence-unit-metadata>
<persistence-unit-defaults>
<schema>newschema</schema>
</persistence-unit-defaults>
</persistence-unit-metadata>
</entity-mappings>
|
最终的效果可以通过MySQL Client命令行查看,也可以通过Workbench查看。这里我用Workbench查看如下: