2022年7月31日 星期日

Hibernate

 

Hibernate是一種Java語言下的物件關係對映ORM)解決方案。它是使用GNU寬通用公共許可證發行的自由開源的軟體。它為物件導向領域模型到傳統的關係型資料庫的對映,提供了一個使用方便的持久化框架

 

Spring Hibernate integration

 

Hibernate validation

 

# A framework for persisting / saving Java objects in a database

Ø  Handles all of low-level SQL

Ø  Minimizes the amount of JDBC code you have to develop

Ø  Provide object to relational mapping (java class and db table)

 

Ø  session.save, session.get, session.createQuery(“from Student”)

 

# Hibernate and JDBC (use jdbc for all database communication)

 

# Dev Process

Ø  d

 

# Entity Class

Ø  Java class that is mapped to a database table

Ø  Need to tell hibernate how to map this class to actual table and also how to map fields to the actual columns

 

Annotation

# @Entity

# @Table(name=student)

# @Id

# @Column(name=id)

 

#SessionFactory

#Session

 

Default Hibernate Configuration File (hibernate.cfg.xml)

Factory.getCurrentSession

Ø  Use session object to save / retrieve Java objects

Session.beginTransaction()

Session.save(tempStudent)

Session.getTransaction().commit();

Factory.close

 

HQL (Hibernate Query Language)

Session.createQuery

 

@ OneToOne

@ JoinColumn(name=instructor_detail_id)

Private InstructorDetail instructorDetail;

 

CascadeType

Ø  Default no operations are cascaded

Ø  PERSIST

Ø  REMOVE

Ø  REFRESH

Ø  Detached

Ø  MERGE

Ø  ALL

 

@OneToOne(cascade=CascadeType.ALL)

 

@OneToMany( fetch=FetchType.LAZY, cascade=CascadeType.ALL)

LAZY vs Eager

 

Uni-Directional vs Bi-Directional

 

@ManyToOne

@JoinColumn(name=instructor_id)

 

@OneToMany(mappedBy=instructor)

 

@ManyToMany

@JoinTable (

        Name = “course_student”

        joinColumns = @JoinColumn(name=course_id)

        inverseJoinColumns=@JoinColumn(name=student_id);


 

沒有留言:

張貼留言

IT Knowledge Map

https://docs.google.com/spreadsheets/d/1ZmN7G1unUAEpTPp5ObDnlAUtILLwwvluy-KHumMPEUU/edit#gid=0