3.1 Nyambung Hibernate lan Database
Kita sinau babagan carane nyambungake Hibernate menyang aplikasi nggunakake Maven, lan carane peta tabel menyang kelas nggunakake anotasi. Lan saiki pitakonan sabanjure muncul - kepiye carane maca obyek saka database utawa nyimpen ing kono?
Ora cepet banget. Kaping pisanan, sampeyan kudu ngrampungake telung perkara liyane:
- Konfigurasi sambungan database
- Nyetel Hibernate
- Nggarap EntityManager

Hibernate rampung ndhelikake karya karo database saka aplikasi, nanging supaya ora keluwihan, iku kudu dikonfigurasi bener. Sampeyan ora bisa ngliwati tahap iki - yen ora, kepiye carane Hibernate bakal ngerti database kanggo nyimpen obyek?
Hibernate bisa dikonfigurasi lan diwenehi informasi basis data kanthi telung cara
- Gunakake file Properties
- Gunakake file hibernate.cfg.xml
- Gunakake metode kacang Konfigurasi
Lan sanajan aku paling seneng sing pungkasan, sampeyan mesthi bakal nemoni kabeh telu, mula kita bakal nganalisa kabeh telu ing kene.
3.2 Wewenang ing database
Ayo dadi miwiti karo sing paling penting - sambungan database. Kanggo nindakake iki, sampeyan kudu nyedhiyani data supaya Hibernate bisa mlebu menyang database sing dikarepake.
Konfigurasi File Properties |
---|
hibernate.properties |
|
Setelan sing padha bisa disetel ing wangun file xml:
Konfigurasi adhedhasar XML |
---|
hibernate.cfg.xml |
|
Ing loro conto, kita ndeleng setelan sing padha karo nilai sing padha. Mung conto pisanan minangka file properti , lan sing nomer loro minangka file xml .
Setelan iki dipérang dadi telung klompok:
- Nemtokake jinis DBMS
- Nemtokake dialek (jinis DBMS), contone, Oracle 9.0
- Nemtokake jeneng driver JDBC kanggo nggarap DBMS iki
- Nemtokake data kanggo wewenang ing database
- url database
- jeneng panganggo
- sandi
- Konfigurasi Mesin Hibernate
hibernate.show_sql
- Hibernate bakal duplikat ing console kabeh panjalukan sing executeshbm2ddl.auto
- Hibernate bakal ngganti struktur database yen perlu
Ana cara katelu kanggo nyetel konfigurasi - liwat tong sampah. Biasane digunakake bebarengan karo Spring, supaya kita bakal ndeleng nalika sinau SpringFramework.
3.3 Entuk SessionFactory
Langkah sabanjure kanggo njaluk SessionFactory obyek. Ana sawetara cara kanggo nindakake iki:
Cara pisanan yaiku nggunakake file hibernate.properties .
Kanggo nindakake iki, sampeyan mung kudu nulis kode ing ngisor iki:
SessionFactory sessionFactory = new Configuration().buildSessionFactory();
Yen file hibernate.properties ora ditemokake ing direktori proyek saiki, pangecualian bakal dibuwang.
Cara kapindho yaiku konfigurasi nggunakake hibernate.cfg.xml .
SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
Yen sampeyan nulis kode kasebut, banjur hibernate.cfg.xml
. Yen ora ana file kasebut, metode kasebut buildSessionFactory()
bakal mbuwang pengecualian.
Cara katelu yaiku nyetel file konfigurasi kanthi manual .
Kadhangkala sajrone proses pangembangan, sampeyan kudu ngalih menyang basis tes utawa ngganti sawetara setelan liyane kanggo nggarap pangkalan, kanggo iki sampeyan bisa nyetel file konfigurasi kanthi manual:
SessionFactory sessionFactory = new Configuration().configure("hibernate-dev.cfg.xml").buildSessionFactory();
Cara papat - kita nggunakake file hibernate.properties khusus:
ClassLoader classLoader = Thread.currentThread().getClassLoader();
Properties properties = new Properties();
properties.load(classLoader.getResourceAsStream("hibernate-dev.properties"));
SessionFactory sessionFactory = new Configuration()
.addProperties(properties)
.buildSessionFactory();
Lan pungkasane, sampeyan mung bisa njahit kabeh parameter sing dibutuhake langsung menyang kode:
Properties properties = new Properties();
properties.put(Environment.DRIVER, "com.mysql.jdbc.Driver");
properties.put(Environment.URL, "jdbc:mysql://localhost:3306/supershop");
properties.put(Environment.USER, "root");
properties.put(Environment.PASS, "password");
SessionFactory sessionFactory = new Configuration()
.setProperties(properties)
.buildSessionFactory();
3.4 Nemtokake ngendi kanggo nggoleki kelas Entitas
Nanging ora mung kuwi. Nalika kita ngatur obyek SessionFactory ing Hibernate, SessionFactory iki mriksa sing kabeh tabel sing dibutuhake karo jinis kolom dibutuhake ana ing database.
Lan supaya SessionFactory bisa nindakake iki, kudu dilewati dhaptar kelas entitas sing kudu dipetakan menyang database.
Ana telung cara kanggo ngliwati dhaptar kelas entitas:
Metode siji. Ing hibernate.cfg.xml
nambah baris kaya:
<mapping class="class-qualified-name" />
Tuladha:
<mapping class="com.codegym.data.User" />
<mapping class="com.codegym.data.Employee" />
<mapping class="com.codegym.data.Task" />
Cara loro. Nelpon cara ing obyek KonfigurasiaddAnnotatedClass()
. Tuladha:
SessionFactory sessionFactory = new Configuration()
.configure()
.addAnnotatedClass(com.codegym.data.User.class)
.buildSessionFactory();
Yen ana akeh kelas, sampeyan bisa nambah kabeh paket:
SessionFactory sessionFactory = new Configuration()
.configure()
.addPackage("com.codegym.data")
.buildSessionFactory();
3.5 Tuladha pungkasan
Saiki kita wis sinau babagan carane ngatur obyek SessionFactory, ayo nulis kode sing bakal digunakake.
Iku bakal kalebu telung cara:
- Konfigurasi Hibernate
- Cara sing entuk kabeh karyawan saka database
- Cara sing nyimpen karyawan anyar menyang database
Cithakan kode iki bakal katon kaya iki:
class EmployeeManager {
private SessionFactory sessionFactory;
public void class init() {
this.sessionFactory = new Configuration()
.configure()
.buildSessionFactory();
}
public List<Employee> getAllEmployes() {
try (Session session = sessionFactory.openSession()) {
Query<Employee> query = session.createQuery("from Employee", Employee.class);
return query.list();
}
}
public void addEmployee(Employee employee ) {
try (Session session = sessionFactory.openSession()) {
Transaction transaction = session.beginTransaction();
session.save(employee);
transaction.commit();
}
}
}
Sadurunge nglakokake pitakon menyang database, sampeyan kudu nggawe sesi sing kapisah. Yen panjaluk kasebut ana gandhengane, mula bisa ditindakake ing sesi sing padha. Yen panjaluk kasebut ora ana hubungane (lan sawetara menit bisa dilewati ing antarane), mula kudu nggawe sesi dhewe.
Yen sampeyan pengin maca data saka database utawa nglakokake pitakon kompleks, sampeyan kudu nggawe obyek Query dhisik lan digunakake kanggo nglakokake pitakon sampeyan.
Uga, saben pitakon menyang database dieksekusi ing transaksi dhewe. Sampeyan kudu mbukak, nindakake operasi sing dibutuhake, banjur nutup (komit).
Ing kuliah ing ngisor iki, kita bakal nganalisa kanthi luwih rinci babagan cara kerjane.
GO TO FULL VERSION