オブジェクト指向メソッドを使用したデータベースへのアクセスは、人気のある ORM フレームワークである Hibernate によって提供されます。 Hibernate では、OID クエリ、オブジェクト ナビゲーションの取得、HQL の取得、QBC の取得、SQL の取得など、さまざまなクエリ メソッドを使用してデータを取得できます。
OID (オブジェクト識別子) は、Hibernate の各永続オブジェクトの一意の識別子です。 OID クエリを使用して、特定の永続オブジェクトを取得できます。 OID クエリを使用する場合は、load()
または get()
メソッドを使用する必要があります。これら 2 つのメソッドの違いは、load()
メソッドは必要に応じてオブジェクトをロードするのに対し、get()
メソッドはオブジェクトを即座にロードすることです。以下は、get()
メソッドの使用例です。
Session session = HibernateUtil.getSessionFactory().getCurrentSession(); session.beginTransaction(); Student student = (Student) session.get(Student.class, 1); session.getTransaction().commit();
上の例では、get()
メソッドを使用して ID を持つ Student を取得します。 1 つのオブジェクト。
オブジェクト ナビゲーションの取得を使用すると、オブジェクト間の関係を通じてデータを取得できます。たとえば、Student クラスと Address クラスがあり、それらの間に 1 対 1 の関係がある場合、オブジェクト ナビゲーションの取得を使用して、特定の Student オブジェクトのアドレスを取得できます。以下は、オブジェクト ナビゲーションを使用した取得の例です。
Session session = HibernateUtil.getSessionFactory().getCurrentSession(); session.beginTransaction(); Student student = (Student) session.get(Student.class, 1); Address address = student.getAddress(); session.getTransaction().commit();
上の例では、Student オブジェクトを取得し、getAddress()
メソッドを使用して学生の住所を取得します。
HQL (Hibernate Query Language) はオブジェクトベースのクエリ言語で、SQL に似ていますが、よりオブジェクト指向です。 HQL は、Hibernate マッピング ファイルのクラスとプロパティを使用してクエリを構築します。以下は、HQL を使用してすべての Student オブジェクトをクエリする例です。
Session session = HibernateUtil.getSessionFactory().getCurrentSession(); session.beginTransaction(); Query query = session.createQuery("from Student"); List<Student> students = query.list(); session.getTransaction().commit();
上記の例では、createQuery()
メソッドを使用して HQL クエリを作成し、その後 ## を使用します。 #list() 結果リストを取得するメソッド。
Session session = HibernateUtil.getSessionFactory().getCurrentSession(); session.beginTransaction(); Criteria criteria = session.createCriteria(Student.class); List<Student> students = criteria.list(); session.getTransaction().commit();上の例では、
createCriteria() メソッドを使用して Criteria オブジェクトを作成し、
list を使用します。 () 結果リストを取得するメソッド。
Session session = HibernateUtil.getSessionFactory().getCurrentSession(); session.beginTransaction(); SQLQuery query = session.createSQLQuery("select * from Student"); query.addEntity(Student.class); List<Student> students = query.list(); session.getTransaction().commit();上記の例では、
createSQLQuery() メソッドを使用して SQL クエリを作成し、
addEntity() を使用します。 メソッドは結果を Student クラスにマップします。
@ManyToOne(fetch = FetchType.EAGER) private Address address;上記の例では、
fetch 属性を
EAGER に設定し、即時フェッチの使用を示します。
@ManyToOne(fetch = FetchType.LAZY) private Address address;上記の例では、
fetch 属性を
LAZY に設定し、遅延フェッチの使用を示します。
@OneToMany(mappedBy = "student", fetch = FetchType.LAZY) @BatchSize(size = 10) private List<Grade> grades;上記の例では、
@BatchSize アノテーションを
@OneToMany アノテーションに追加して、バッチグラブ。
Session session = HibernateUtil.getSessionFactory().getCurrentSession(); session.beginTransaction(); Student student = (Student) session.load(Student.class, 1); Address address = student.getAddress(); session.getTransaction().commit();上記の例では、
load() メソッドを使用して ID 1 の Student オブジェクトを取得し、
getAddress を使用します。 ( ) メソッドを使用して学生の住所を取得します。遅延ロードを使用しているため、Hibernate は必要な場合にのみアドレス オブジェクトをロードします。
以上がJava Hibernate でクエリ戦略とクローリング戦略を使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。