рд╕рднреА рдХреЛ рд╢реБрдн рджрд┐рди! рдЬрдм рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ рдЬреЛ рдХрд┐рд╕реА рддрд░рд╣ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░реЗрдЧрд╛, рддреЛ рд╡реЗ рд╡рд┐рднрд┐рдиреНрди рд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдЕрдЪреНрдЫрд╛ рдкреБрд░рд╛рдирд╛
jdbc рд╣реИ , рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рднреА рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
EclipseLink ,
TopLink , iBatis (рдкрд╣рд▓реЗ рд╕реЗ рд╣реА
MyBatis ),
рд╕реНрдкреНрд░рд┐рдВрдЧ рдлреНрд░реЗрдорд╡рд░реНрдХ рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╣рдорд╛рд░реЗ рд▓реЗрдЦ рдХреЗ рдирд╛рдпрдХ -
рд╣рд╛рдЗрдмрд░рдиреЗрдЯ ред рдмреЗрд╢рдХ, рдореИрдВрдиреЗ рдпрд╣рд╛рдВ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рднреА рдЙрдкрдХрд░рдгреЛрдВ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рд╕рдмрд╕реЗ рдЖрдо рд▓реЛрдЧреЛрдВ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИред рдпрд╣ рдЖрд▓реЗрдЦ рджрд┐рдЦрд╛рдПрдЧрд╛ рдХрд┐ рд╕рдВрдЧреНрд░рд╣реАрдд рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рд╛рдЗрдмрд░рдиреЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВ, рджреЛрдиреЛрдВ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдФрд░ рд╡рд░реНрдЧ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЛ рдореИрдк рдХрд░реЗрдВред рдкреНрд░рд╛рдпреЛрдЧрд┐рдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд░реВрдк рдореЗрдВ, рдУрд░реЗрдХрд▓ рд▓реЗрдВред
рд╣рдо рдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рдм рдХреБрдЫ рддреИрдпрд╛рд░ рдХрд░реЗрдВрдЧреЗред рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо 3 рдЯреИрдмрд▓реЗрдЯ рдмрдирд╛рдПрдВрдЧреЗ, рдЬрд┐рд╕ рдкрд░ рд╣рдо рдЕрднреНрдпрд╛рд╕ рдХрд░реЗрдВрдЧреЗред
CREATE TABLE book ( id NUMBER NOT NULL, name VARCHAR2 (100 BYTE) NOT NULL, description VARCHAR2 (1000 BYTE) NOT NULL, CONSTRAINT pk$book_id PRIMARY KEY (id) ) CREATE TABLE student ( id NUMBER NOT NULL, name VARCHAR2 (100 BYTE) NOT NULL, CONSTRAINT pk$student_id PRIMARY KEY (id) ) CREATE TABLE catalog ( id_student NUMBER NOT NULL, id_book NUMBER NOT NULL )
рдЕрдм рдПрдХ рдлрдВрдХреНрд╢рди рдмрдирд╛рдПрдВред рдЬреЛ рдЕрдкрдиреА рдЖрдИрдбреА рджреНрд╡рд╛рд░рд╛ рдкреБрд╕реНрддрдХ рдХрд╛ рд╢реАрд░реНрд╖рдХ рд▓реМрдЯрд╛рдПрдЧрд╛, рдЙрджрд╛рд╣рд░рдг рдмреЗрд╡рдХреВрдл рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдЗрдирдкреБрдЯ рдиреНрдпреВрдореЗрд░рд┐рдХ рдкреИрд░рд╛рдореАрдЯрд░ рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХрд╛ рд╕рд┐рджреНрдзрд╛рдВрдд рджрд┐рдЦрд╛рдПрдЧрд╛ред
CREATE OR REPLACE FUNCTION get_book_name_by_id (p_id IN NUMBER) RETURN VARCHAR2 IS v_name VARCHAR2 (100); BEGIN SELECT name INTO v_name FROM book WHERE id = p_id; RETURN v_name; EXCEPTION WHEN NO_DATA_FOUND THEN RETURN ' !!'; END;
рдФрд░ рдпрд╣ рднреА, рдПрдХ рдкреНрд░рдпреЛрдЧ рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдо рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдПрдХ рд╕рд░рд▓ рдмрдЪрдд рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдмрдирд╛рдПрдВрдЧреЗ, рдЬрд┐рд╕рдореЗрдВ рдЗрдирдкреБрдЯ рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рджреЛрдиреЛрдВ рдкреИрд░рд╛рдореАрдЯрд░ рд╣реЛрдВрдЧреЗред
CREATE OR REPLACE PROCEDURE save_book (p_id IN OUT NUMBER, p_name IN VARCHAR2, p_descr IN VARCHAR2) IS BEGIN IF p_id > 0 THEN UPDATE book SET name = p_name, description = p_descr WHERE id = p_id; ELSE SELECT catalog_seq.NEXTVAL INTO p_id FROM DUAL; INSERT INTO book VALUES (p_id, p_name, p_descr); END IF; END;
рдЕрдм рдЬрд╛рд╡рд╛ рдореЗрдВ рдХрдХреНрд╖рд╛рдУрдВ рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВред
рд╣рдо рдХрдХреНрд╖рд╛рдУрдВ рдореЗрдВ рдЕрдкрдиреЗ 3 рдбреЗрдЯрд╛рдмреЗрд╕ рдЯреЗрдмрд▓ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВ:
@Entity @Table public class Student implements Serializable { private static final long serialVersionUID = -5170875020617735653L; @Id @GeneratedValue(strategy = GenerationType.AUTO, generator = "my_entity_seq_gen") @SequenceGenerator(name = "my_entity_seq_gen", sequenceName = "catalog_seq") private long id; @Column private String name; @OneToMany(mappedBy = "student", fetch = FetchType.LAZY) private Set<Book> bookList;
рдХреЛрдб рдкрд░ рдереЛрдбрд╝рд╛ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг:
- рдпрджрд┐ рдЖрдкрдХреА рдХрдХреНрд╖рд╛ рдХрд╛ рдирд╛рдо рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рдирд╛рдо рд╕реЗ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддрд╛ рд╣реИ, рддреЛ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╣рдо рдЗрд╕ рддрд░рд╣ рд▓рд┐рдЦрддреЗ рд╣реИрдВ: рддрд╛рд▓рд┐рдХрд╛ (рдирд╛рдо = "рдЫрд╛рддреНрд░");
- рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдпрд╣ рд╣реИ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдПрдХ рдЖрдИрдбреА рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рдЕрдЧрд░ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рдЖрдИрдбреА рдлрд╝реАрд▓реНрдб рдХрд╛ рдирд╛рдо рдФрд░ рд╣рдорд╛рд░реЗ рдЪрд░ рдХрд╛ рдирд╛рдо рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддреЗ рд╣реИрдВ, рддреЛ рдПрдиреЛрдЯреЗрд╢рди рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛: рдЖрдИрдбреА @Column (рдирд╛рдо = рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ "рдЯреЗрдмрд▓ рдЖрдИрдбреА");
- @GeneratedValue рдФрд░ @SequenceGenerator рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рд╣рдо рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд░рдгрдиреАрддрд┐ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рд╣рдо рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐ рдЬрдм рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдЬрд╛рдирдХрд╛рд░реА рдХреА рдмрдЪрдд рд╣реЛрддреА рд╣реИ, рддреЛ рд╣рдо рдЙрд╕ рдирд╛рдо "рдЕрдиреБрдХреНрд░рдо_рд╕реЗрдХ" рдирд╛рдо рдХреЗ рдЕрдиреБрдХреНрд░рдо рд╕реЗ рдПрдХ рдирдВрдмрд░ рд▓реЗрддреЗ рд╣реИрдВ;
- рдЪреВрдБрдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдЫрд╛рддреНрд░ рдХреЗ рдкрд╛рд╕ рдХрдИ рдХрд┐рддрд╛рдмреЗрдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЗрд╕реЗ рдЗрд╕ @OneToMany (mappedBy = "student", fetch = FetchType.LAZY) рдЬреИрд╕реЗ рдПрдиреЛрдЯреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВрдЧреЗ, рдЬрд╣рд╛рдБ mpedBy = "student" рдкреБрд╕реНрддрдХ рд╡рд░реНрдЧ рдореЗрдВ рдлрд╝реАрд▓реНрдб рдХрд╛ рдирд╛рдо рд╣реИ (рджреЗрдЦреЗрдВ) рдиреАрдЪреЗ), рдФрд░ FetchType.LAZY - рд╣рдореЗрдВ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рд╕рдВрдЧреНрд░рд╣
Set<Book> bookList
рд╣рдо рдХреЗрд╡рд▓ рдорд╛рдВрдЧ рдкрд░ рдбреЗрдЯрд╛ рд▓реЛрдб рдХрд░реЗрдВрдЧреЗред
рдирд┐рдореНрди 2 рдбреЗрдЯрд╛рдмреЗрд╕ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреА рдореИрдкрд┐рдВрдЧ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧреА:
@Entity @Table public class Book implements Serializable { private static final long serialVersionUID = 1L; @Id @Column(name="ID") @GeneratedValue(strategy = GenerationType.AUTO, generator = "my_entity_seq_gen") @SequenceGenerator(name = "my_entity_seq_gen", sequenceName = "catalog_seq") private long id; @Column(name="NAME",unique = true, nullable = false, length = 100) private String name; @Column(name="DESCRIPTION",unique = true, nullable = false, length = 100) private String description; @ManyToOne(fetch = FetchType.LAZY,optional=true) @JoinTable(name = "CATALOG", joinColumns = @JoinColumn(name = "ID_BOOK"), inverseJoinColumns = @JoinColumn(name = "ID_STUDENT")) private Student student;
рдлрд╝реАрд▓реНрдб рдкреНрд░рддрд┐рдмрдВрдз рдХреЛ рд╕реАрдзреЗ рдПрдиреЛрдЯреЗрд╢рди рдореЗрдВ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдпрд╣ рдЕрдЧрд▓реА рдкрдВрдХреНрддрд┐ @ рдХреЙрд▓рдо (рдирд╛рдо = "рдирд╛рдо", рдЕрджреНрд╡рд┐рддреАрдп = рд╕рддреНрдп, рдЕрд╢рдХреНрдд = рдЧрд▓рдд, рд▓рдВрдмрд╛рдИ = 100) рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдПрдиреЛрдЯреЗрд╢рди @ManyToOne рдФрд░ @JoinTable (рдирд╛рдо = "CATALOG") рдХреЗ рд╕рд╛рде рд╣рдо рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐ рдмреБрдХ рдЯреЗрдмрд▓ рдФрд░ рд╕реНрдЯреВрдбреЗрдВрдЯ рдЯреЗрдмрд▓ рдХреЗ рдХреИрдЯрд▓реЙрдЧ рдЯреЗрдмрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрдИ-рд╕реЗ-рдХрдИ рд╕рдВрдмрдВрдз рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдмреБрдХ рдФрд░ рд╕реНрдЯреВрдбреЗрдВрдЯ рдХреЗ рд▓рд┐рдП рд╕рднреА рдкрд░рд┐рд╡рд░реНрддрди рдЕрдкрдиреЗ рдЖрдк рд▓рд╛рдЧреВ рд╣реЛ рдЬрд╛рдПрдВрдЧреЗред рдХреИрдЯрд▓реЙрдЧ рдЯреЗрдмрд▓ред
рдЦреИрд░, рд╣рдо рдореИрдкрд┐рдВрдЧ рдЯреЗрдмрд▓ рдХреЗ рд╕рд╛рде рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдФрд░ рдЕрдм рд╣рдо рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рд╕реАрдзреЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝реЗрдВрдЧреЗред
рд╕рдВрдЧреНрд░рд╣ рдХреЛ рднрд░рддреЗ рд╕рдордп рдбреЗрдЯрд╛ рдирд┐рд╖реНрдХрд░реНрд╖рдг рд╡рд┐рднрд┐рдиреНрди рддрд░реАрдХреЛрдВ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
- HQL (рд╣рд╛рдЗрдмрд░рдиреЗрдЯ рдХреНрд╡реЗрд░реА рднрд╛рд╖рд╛) рдХреНрд╡реЗрд░реАрдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
List<Book> book = (List<Book>)session.createQuery("from Book order by name").list();
- SQL рдкреНрд░рд╢реНрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
List<Book> book = (List<Book>)session.createSQLQuery("select ID, DESCRIPTION, NAME from book order by NAME") .addScalar("id",Hibernate.LONG).addScalar("name").addScalar("description") .setResultTransformer(Transformers.aliasToBean(Book.class)).list();
- рдорд╛рдирджрдВрдб рдХреЗ рд╕рд╛рде
List<Book> book=(List<Book>)session.createCriteria(Book.class).createAlias("student", "st").add(Restrictions.eq("st.name", "Maxim")).list();
рдЪрд▓реЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВред рдХрд┐рд╕реА рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЖрдИрдбреА рджреНрд╡рд╛рд░рд╛ рдкреБрд╕реНрддрдХ рдХрд╛ рд╢реАрд░реНрд╖рдХ рд▓реМрдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЪрд░рдгреЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рддреЗ рд╣реИрдВ:
String bookName = (String)session.createSQLQuery("{? = call get_book_name_by_id (:id)}").setLong("id",1).uniqueResult();
рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЫрд╛рддреНрд░ рдирд╛рдордХ рд╕рд░реНрд╡рд░ рдкрд░ рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рд╣реИ рдЬреЛ рдПрдХ рдХрд░реНрд╕рд░ рд▓реМрдЯрд╛рддрд╛ рд╣реИ:
FUNCTION get_all_students RETURN SYS_REFCURSOR IS l_cur SYS_REFCURSOR; BEGIN OPEN l_cur FOR SELECT * FROM student ORDER BY 1; RETURN l_cur; END;
рдЙрд╕рдХреЗ рдмрд╛рдж рдореИрдкрд┐рдВрдЧ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреА рдЬрд╛рдПрдЧреА, рдЗрд╕рдХреЗ рдмрдЬрд╛рдп
@Table(name="STUDENT")
рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рддреЗ
@Table(name="STUDENT")
рд╣рдо рд▓рд┐рдЦреЗрдВрдЧреЗ
@NamedNativeQuery(name="getAllStudent",query="{? = call get_all_students}", callable=true, resultClass=Student.class)
рдФрд░ рдЗрд╕ рд╕рдорд╛рд░реЛрд╣ рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реЛрдЧрд╛:
List<Student> student = (List<Student>) session.getNamedQuery("entity").list();
рдЦреИрд░, рд╣рдорд╛рд░реЗ save_book рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬреЛрдбрд╝рддреЛрдбрд╝ рдХрд░реЗрдВрдЧреЗ:
CallableStatement st = session.connection().prepareCall("{call save_book(?,?,?)}"); st.setLong(1,0); st.setString(2, " , "); st.setString(3,"- "); st.registerOutParameter(1, java.sql.Types.NUMERIC); st.execute(); System.out.println(st.getLong(1));
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдкрдиреЗ рд╢рд╛рдпрдж рджреЗрдЦрд╛, рдЬрдм рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдПрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рдФрд░ рд╕рдВрдЧреНрд░рд╣ рдХреЛ рдкреЙрдкреНрдпреБрд▓реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдорд╛рдВрдб рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рддреЛ рд╢рдмреНрдж рд╕рддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рдерд╛ред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдпрд╣ рд╢рдмреНрдж рд╣рдорд╛рд░реЗ рдЬрд╛рд╡рд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдФрд░ рд╣рд╛рдЗрдмрд░рдиреЗрдЯ рдврд╛рдВрдЪреЗ, рдпрд╛рдиреА org.hibernate.Session рд╕рддреНрд░ рдХреЗ рдмреАрдЪ рдореБрдЦреНрдп рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ, рд╣рдореЗрдВ рдПрдХ рдФрд░ рдореМрд▓рд┐рдХ рдФрд░ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ - рд╕реЗрд╢рдирдлреИрдХреНрдЯрд░реАред SessionFactory рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╡реИрд╢реНрд╡рд┐рдХ рдХрд╛рд░рдЦрд╛рдирд╛ рд╣реИред рдЗрд╕ рдХрд╛рд░рдЦрд╛рдиреЗ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ org.hibernate.cfg.Configuration рдХреНрд▓рд╛рд╕ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдпрд╣ рдЗрд╕ рддрд░рд╣ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
SessionFactory sessions = new Configuration().configure().buildSessionFactory();
рдЬрд╣рд╛рдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди ()ред рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ ()ред BuildSessionFactory () hibernate.cfg.xml рдирд╛рдордХ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдХреЛ рдкрд╛рд░реНрд╕ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рдмрдЧрд▓ рдореЗрдВ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдпрджрд┐ рдкрде рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рд╣реИред рдпрд╣рд╛рдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рд╣реИ, рдЬреЛ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдХрдиреЗрдХреНрд╢рди рдХрд╛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдФрд░ рд╣рдорд╛рд░реА рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рджрд┐рдЦрд╛рддрд╛ рд╣реИ:
<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <property name="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriver</property> <property name="hibernate.connection.url">jdbc:oracle:thin:@localhost:port:baseName</property> <property name="hibernate.connection.username">username</property> <property name="hibernate.connection.password">password</property> <property name="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</property> <property name="show_sql">true</property> <mapping class="com.sample.javaHibernate.data.Book" /> <mapping class="com.sample.javaHibernate.data.Student" /> </session-factory> </hibernate-configuration>
рдФрд░ рдЕрдм, рдЬрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдХрд╛рд░рдЦрд╛рдирд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рд╡рд┐рдиреНрдпрд╛рд╕ рд╣реИрдВ (рдкреВрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рд╕рдВрдмрдВрдз, рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреА рдореИрдкрд┐рдВрдЧ / рдкреНрд░рджрд░реНрд╢рди, рдЖрджрд┐) рд╣рдо рд╕рддреНрд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
Session session = sessions.openSession();
рдЖрдк рдЗрд╕ рддрд░рд╣ рд▓реЗрдирджреЗрди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
session.beginTransaction();
рдФрд░ рддрджрдиреБрд╕рд╛рд░
session.getTransaction().commit();
рд▓рдЧрддрд╛ рддреЛ рд╕рдм рд╣реИред рдмреЗрд╢рдХ, рдореИрдВ рд╕рдм рдХреБрдЫ рдХрд╡рд░ рдирд╣реАрдВ рдХрд░ рд╕рдХрд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рддреНрд╡рд░рд┐рдд рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред