1.フレームワークとは何ですか
フレームワークは、私たちはいくつかの機能を達成するのを助けるために半製品、フレームワークです。
フレームを使用しての最大の利点2
最大の利点は、フレームワークを使用することであるが、それでもあまり我々が達成するために必要な機能を実現するために、コードの一部を記述します。
3.フレームワークhiberbnateは何ですか
(1)休止フレームアプリケーションのJavaEE三層層フレームワークDAO
(2)JDBC根底にあるコードが休止状態、パッケージには、複雑なコードを記述する必要はありませんHibernateのJDBCを使用してJDBCを休止することですが、SQL文を書くことができない、データベースは、変更が、基本を達成するため、追加、削除することができます、チャールズ。
(3)休止軽量なフレームワークです。
4.hibernateアイデア
(1)使用休止、追加、削除、変更、検索するデータベースのORMのアイデアを。
(2)ORMの思考とは何ですか?
ORM:オブジェクトリレーショナルマッピングオブジェクトリレーショナルマッピング、エンティティ・クラスとなるように対応するエンティティ・クラス内のテーブルのすべてのいずれかを行っている対応テーブルデータベースは、データベースの列に属性。そして、エンティティクラスのデータベーステーブル名の名前に対応しています。
したがって、我々は、データベース内の動作テーブルには必要ではないが、むしろ直接エンティティ・クラス・オブジェクトを操作すると、データベーステーブルの動作を達成するように、次に、データベース内のテーブルにマップされました。
5.ビルド環境を休止
(1)所望のJARパッケージを導入します。
(2)エンティティ・クラスを作成します
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
<strong>
package
com.bean;
public
class
User {
private
int
uid;
private
String username;
private
String password;
private
String address;
public
int
getUid() {
return
uid;
}
public
void
setUid(
int
uid) {
this
.uid = uid;
}
public
String getUsername() {
return
username;
}
public
void
setUsername(String username) {
this
.username = username;
}
public
String getPassword() {
return
password;
}
public
void
setPassword(String password) {
this
.password = password;
}
public
String getAddress() {
return
address;
}
public
void
setAddress(String address) {
this
.address = address;
}
}
</strong>
|
这样使用hibernate框架,不需要自己手动创建表,hibernate会帮我们把表建好。
(3)配置实体类和数据库表的一一对应的关系(映射关系)
使用配置文件来实现实体类和数据库表的映射关系。
创建xml文件,文件的名称和位置没有固定的要求,但是建议在实体类的文件夹中建xml文件名称为:实体类名称.hbm.xml
配置文件的创建首先要引入约束:
xml文件的约束分为dtd约束和schema约束,hibernate是引入dtd约束
配置文件(实体类名.hbm.xml)引入约束(dtd格式)
1
2
|
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"
>
|
<hibernate-mapping> 配置文件的根节点
配置映射关系
<class name="实体类的全路径" table="实体类映射到数据库中的表的名字">在此节点内配置实体类
hibernate要求实体类中有一个属性是唯一的值也就是对应表中的主键
<id name="实体类中对应的属性的名称" column="表中对应的字段的名称(也就是主键)">
设置主键的增长策略
<generator class="native"></generator>
其中的class的值可以等于下图中的一些值
</id>
下面就是对实体类的其他属性和表中除去主键外的字段进行一一对应的配置了
<property name="实体类属性名称" column="表中对应的列名"></property>当然这就要看实体类或者是表中有多少个除去主键的列了,有几列就对应的配置几列了
</class>
</hibernate-mapping>
(4)配置核心的配置文件(hibernate.cfg.xml)
同样是先引入核心配置文件的约束(dtd格式)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
<?xml version=
'1.0'
encoding=
'UTF-8'
?>
<!--引入约束dtd格式-->
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"
>
<!-- Generated by MyEclipse Hibernate Tools. -->
<hibernate-configuration>
<session-factory>
<!--配置数据库-->
<property name=
"dialect"
>
org.hibernate.dialect.SQLServerDialect<!--配置数据库的方言,目前是SQLServer数据库的方言,说白了就是为了让hibernate识别你的数据语句-->
</property>
<property name=
"connection.url"
>
jdbc:sqlserver:
//localhost:1433;databaseName=logPublish<!--配置你数据库的连接-->
</property>
<property name=
"connection.username"
>sa</property><!--配置数据库的登录名-->
<property name=
"connection.password"
>sa</property><!--配置数据库的密码-->
<property name=
"connection.driver_class"
>
com.microsoft.sqlserver.jdbc.SQLServerDriver<!--配置数据库的加载驱动-->
</property>
<property name=
"myeclipse.connection.profile"
>sqlserver</property>
<!--配置hibernate-->
<property name=
"show_sql"
>
true
</property><!--为了让hinbernate输出执行的底层的sql语句-->
<property name=
"current_session_context_class"
>thread</property><!--hinbernate绑定当前session-->
<property name=
"format_sql"
>
true
</property><!--让输出的底层执行的sql语句有一定的格式-->
<!--引入实体类的配置文件-->
<mapping resource=
"com/bean/LogInfo.hbm.xml"
/><!--引入LogInfo实体类的配置文件-->
</session-factory>
</hibernate-configuration>
|
核心的配置文件中引入实体类的配置文件可以是多个,但是resource属性的值必须是实体类配置文件的全路径。
需要知道的是在hibernate的操作中只会加载核心的配置文件,不会加载其他的配置文件(所以在核心配置文件中才会引入我们的实体类的配置文件,这样在hibernate的操作过程中就可以加载到实体类的核心配置文件了)
6.Hibernate的过程
(1)加载hibernate核心配置文件(hibernate.cfg.xml)
(2)创建SessionFactory对象
(3)使用SessionFactory对象创建Session对象
(4)使用Session对象开启事务
(5)对数据库的增,删,改,查操作
(6)提交事务
(7)回滚事务
(8)关闭资源
7.hibernate中的核心API
(1)Configuration(用于加载核心配置文件)
Configuration cfg=new Configuration();
cfg.configure();
执行这个语句的时候hibernate会找到核心的配置文件hibernate.cfg.xml进行加载
(2)SessionFactory(用于打开(创建)一个会话,在这里的会话其实也就是对数据库的一次连接到关闭数据库的连接是一次会话)
sessionFactory = configuration.buildSessionFactory();
Configuration对象创建SessionFactory对象
根据核心配置文件中数据库中的配置进行数据库中表的创建。
需要注意的是一个项目只有一个SessionFactory对象,因为这个对象对资源的消耗很大。
(3)Session(用于开启事物(其实这里的Session对象就相当于Jdbc中的Connection))
Session对象里面的方法对数据库实现增,删,改,查的操作。
Session对象中的方法:
(1)saveOrUpdate()
(2)save()
(3)update()
(4)delete()
(5)get()
(6)load()
(7)CreateQuery()
(8)CreateSQLQuery()
(9)CreateCriteria()
最主要的是Session是单线程对象(不能共用)只能自己用不能被其他线程所用
(4)Transaction(用于提交对数据的操作)
事物的四个特性
(1)原子性 即是不可分割,一组操作要么都失败要么都成功
(2)一致性 操作之前和操作之后数据的总数是不变的,就比说转账,小明转给小红500,那么小明的账户要减去-500,小红的账户要+500,但是总的来说小明的钱的总数加上小红的钱的总数,转账的前后是没有改变的
(3)隔离性 多个事物操作同一个数据不会互相影响
(4)持久性 事物提交,在数据库中是生效的