Javaのhibernateフレームワークの基礎とトランザクションの4つの特性
19189 ワード
取引
トランザクションのプロパティ
トランザクションの使用
実行する文をトランザクションのsql文(トランザクションの開始とトランザクションのコミット)でラップします.
トランザクションの独立性レベル
hibernate
操作データのオブジェクト関係型データベースはオブジェクト向けの思想を用いて削除・変更し、煩雑なsql文を用いてデータを操作してデータベースに追加することを避ける.
オブジェクトの変更
検索
削除
単純パッケージ
HQLクエリーの使用
SQL文クエリー
hibernateプロファイル
プロファイルのデフォルト名hibernate.cfg.xml
エンティティークラス
エンティティークラス構成に対応するマッピングファイルを作成する必要があります
User.hbm.xml
トランザクションのプロパティ
: 。
,
: 。
: ,
, 。
: ,
トランザクションの使用
実行する文をトランザクションのsql文(トランザクションの開始とトランザクションのコミット)でラップします.
1.
2. sql
3.
4. ( ) ,
:
begin;
update set money=money-100 where username='a';
update set money=money+100 where username='b';
commit;
トランザクションの独立性レベル
: 。
( : , )
: , 。
。(update)
( : , ATM )
( ): , 。(insert)
mysql :REPEATABLE READ: 、 。 。
hibernate
操作データのオブジェクト関係型データベースはオブジェクト向けの思想を用いて削除・変更し、煩雑なsql文を用いてデータを操作してデータベースに追加することを避ける.
@Test
public void fun1() {
// 1.
// configure() hibernate.cfg.xml
Configuration configuration = new Configuration().configure();
// 2. sessionFactory
SessionFactory sessionFactory = configuration.buildSessionFactory();
// 3. session
// openSession session
Session session = sessionFactory.openSession();
//
User user = new User();
user.setUsername("SC");
user.setPassword("123");
// 4. session transaction
Transaction transaction = session.beginTransaction();
//
session.save(user);
// 5.
transaction.commit();
// 6.
session.close();
sessionFactory.close();
}
オブジェクトの変更
@Test
public void fun2() {
Configuration configuration = new Configuration().configure();
SessionFactory sessionFactory = configuration.buildSessionFactory();
Session session = sessionFactory.openSession();
Transaction transaction = session.beginTransaction();
//
// 1. ( id )
User user = session.get(User.class, 1);
// 2.
user.setUsername("zb");
user.setPassword("1");
// 3. : update
//session.save(user);
session.update(user);
transaction.commit();
session.close();
sessionFactory.close();
}
検索
:
@Test
public void fun3() {
Configuration configuration = new Configuration().configure();
SessionFactory sessionFactory = configuration.buildSessionFactory();
Session session = sessionFactory.openSession();
Transaction transaction = session.beginTransaction();
//
User user = session.get(User.class, 1);
System.out.println(user);
transaction.commit();
session.close();
sessionFactory.close();
}
:
@Test
public void fun4() {
Configuration configuration = new Configuration().configure();
SessionFactory sessionFactory = configuration.buildSessionFactory();
Session session = sessionFactory.openSession();
Transaction transaction = session.beginTransaction();
//
User user = session.load(User.class, 1);
System.out.println(user);
transaction.commit();
session.close();
sessionFactory.close();
// : session
// session
// System.out.println(user);
}
get load
:
:
load ( )
load , get sql
sql
hibernate
削除
@Test
public void fun5() {
Configuration configuration = new Configuration().configure();
// sessionFactory
SessionFactory sessionFactory = configuration.buildSessionFactory();
Session session = sessionFactory.openSession();
Transaction transaction = session.beginTransaction();
//
// 1.
// User user = session.get(User.class, 1);
// session.delete(user);
// 2. id
User user = new User();
user.setId(2);
session.delete(user);
transaction.commit();
session.close();
sessionFactory.close();
}
単純パッケージ
public class HibernateUtils {
// sessionFactory
private static SessionFactory sessionFactory;
static {
//
Configuration configuration = new Configuration().configure();
// session
sessionFactory = configuration.buildSessionFactory();
}
// session
public static Session getSession() {
return sessionFactory.openSession();
}
// session
public static Session getCurrentSession() {
return sessionFactory.getCurrentSession();
}
}
HQLクエリーの使用
@Test
public void fun6() {
Session session = HibernateUtils.getSession();
Transaction transaction = session.beginTransaction();
//
//Query query = session.createQuery("from com.lanou3g.User");
Query query = session.createQuery("from User", User.class);
//
List list = query.list();
System.out.println(list);
transaction.commit();
session.close();
}
SQL文クエリー
@Test
public void fun7() {
Session session = HibernateUtils.getSession();
Transaction transaction = session.beginTransaction();
// sql
NativeQuery
hibernateプロファイル
プロファイルのデフォルト名hibernate.cfg.xml
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driverproperty>
<property name="hibernate.connection.username">rootproperty>
<property name="hibernate.connection.password">123456property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/a_hibernate_01property>
<property name="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialectproperty>
<property name="hibernate.show_sql">trueproperty>
<property name="hibernate.format_sql">trueproperty>
<property name="hibernate.hbm2ddl.auto">updateproperty>
<mapping resource="com/lanou3g/User.hbm.xml"/>
session-factory>
hibernate-configuration>
エンティティークラス
エンティティークラス構成に対応するマッピングファイルを作成する必要があります
:
1.
2.
3.xml
User.hbm.xml
<hibernate-mapping package="com.lanou3g">
<class name="User" table="user">
<id name="id" column="id">
<generator class="native">generator>
id>
<property name="username" column="username">property>
<property name="password" column="password">property>
class>
hibernate-mapping>