рд╕рдмрд╕реЗ рдЫреЛрдЯреЗ рдФрд░ рди рдХреЗрд╡рд▓ рдХреЗ рд▓рд┐рдП рд╣рд╛рдЗрдмрд░рдиреЗрдЯ рдХрд░реЗрдВ

рд╕рднреА рдХреЛ рд╢реБрдн рджрд┐рди! рдЬрдм рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд▓рд┐рдЦрдирд╛ рд╣реЛрдЧрд╛ рдЬреЛ рдХрд┐рд╕реА рддрд░рд╣ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░реЗрдЧрд╛, рддреЛ рд╡реЗ рд╡рд┐рднрд┐рдиреНрди рд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рдЕрдЪреНрдЫрд╛ рдкреБрд░рд╛рдирд╛ 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; //     getter, setter, hashCode(), equals(), toString() } 

рдХреЛрдб рдкрд░ рдереЛрдбрд╝рд╛ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг:
рдирд┐рдореНрди 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; //     getter, setter, hashCode(), equals(), toString() } 

рдлрд╝реАрд▓реНрдб рдкреНрд░рддрд┐рдмрдВрдз рдХреЛ рд╕реАрдзреЗ рдПрдиреЛрдЯреЗрд╢рди рдореЗрдВ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдпрд╣ рдЕрдЧрд▓реА рдкрдВрдХреНрддрд┐ @ рдХреЙрд▓рдо (рдирд╛рдо = "рдирд╛рдо", рдЕрджреНрд╡рд┐рддреАрдп = рд╕рддреНрдп, рдЕрд╢рдХреНрдд = рдЧрд▓рдд, рд▓рдВрдмрд╛рдИ = 100) рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдПрдиреЛрдЯреЗрд╢рди @ManyToOne рдФрд░ @JoinTable (рдирд╛рдо = "CATALOG") рдХреЗ рд╕рд╛рде рд╣рдо рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐ рдмреБрдХ рдЯреЗрдмрд▓ рдФрд░ рд╕реНрдЯреВрдбреЗрдВрдЯ рдЯреЗрдмрд▓ рдХреЗ рдХреИрдЯрд▓реЙрдЧ рдЯреЗрдмрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрдИ-рд╕реЗ-рдХрдИ рд╕рдВрдмрдВрдз рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдмреБрдХ рдФрд░ рд╕реНрдЯреВрдбреЗрдВрдЯ рдХреЗ рд▓рд┐рдП рд╕рднреА рдкрд░рд┐рд╡рд░реНрддрди рдЕрдкрдиреЗ рдЖрдк рд▓рд╛рдЧреВ рд╣реЛ рдЬрд╛рдПрдВрдЧреЗред рдХреИрдЯрд▓реЙрдЧ рдЯреЗрдмрд▓ред
рдЦреИрд░, рд╣рдо рдореИрдкрд┐рдВрдЧ рдЯреЗрдмрд▓ рдХреЗ рд╕рд╛рде рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдФрд░ рдЕрдм рд╣рдо рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рд╕реАрдзреЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝реЗрдВрдЧреЗред
рд╕рдВрдЧреНрд░рд╣ рдХреЛ рднрд░рддреЗ рд╕рдордп рдбреЗрдЯрд╛ рдирд┐рд╖реНрдХрд░реНрд╖рдг рд╡рд┐рднрд┐рдиреНрди рддрд░реАрдХреЛрдВ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
  1. HQL (рд╣рд╛рдЗрдмрд░рдиреЗрдЯ рдХреНрд╡реЗрд░реА рднрд╛рд╖рд╛) рдХреНрд╡реЗрд░реАрдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛
      List<Book> book = (List<Book>)session.createQuery("from Book order by name").list(); 
  2. 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(); 
  3. рдорд╛рдирджрдВрдб рдХреЗ рд╕рд╛рде
      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();
рд▓рдЧрддрд╛ рддреЛ рд╕рдм рд╣реИред рдмреЗрд╢рдХ, рдореИрдВ рд╕рдм рдХреБрдЫ рдХрд╡рд░ рдирд╣реАрдВ рдХрд░ рд╕рдХрд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рддреНрд╡рд░рд┐рдд рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред


Source: https://habr.com/ru/post/In132385/


All Articles