JavaRush /Блоги Java /Random-TG /Аввалин барномаи Hibernate шумо

Аввалин барномаи Hibernate шумо

Дар гурӯҳ нашр шудааст
Дар ин мақола, шумо бо яке аз маъмултарин чаҳорчӯбаҳои корпоративии Java шинос мешавед ва аввалин барномаи худро бо истифода аз Hibernate эҷод мекунед. Оё ҳеҷ гоҳ дар бораи Hibernate нашунидаед? Шояд шумо дар ин бора шунидаед, аммо истифода накардаед? Ё кӯшиш кард, ки оғоз кунад, аммо муваффақ нашуд? Дар ҳар се ҳолат, ба бурида хуш омадед :) Аввалин барномаи Hibernate - 1Салом ба ҳама! Дар ин мақола, ман дар бораи хусусиятҳои асосии чаҳорчӯбаи Hibernate сӯҳбат мекунам ва ба шумо дар навиштани аввалин барномаи хурди худ кӯмак мекунам. Барои ин ба мо лозим аст:
  1. Intellij Idea Ultimate Edition;
    Аз вебсайти расмӣ зеркашӣ кунед ва versionи озмоишии 30-рӯзаро фаъол созед.
  2. PostgeSQL яке аз маъмултарин системаҳои идоракунии пойгоҳи додаҳо (DBMS) мебошад;
  3. Maven (аллакай дар IDEA сохта шудааст);
  4. Каме сабр.
Мақола пеш аз ҳама ба онҳое нигаронида шудааст, ки ҳеҷ гоҳ бо ин технология кор накардаанд, аз ин рӯ миқдори рамз то ҳадди имкон кам карда шудааст. Биёед оғоз кунем!

Hibernate чист?

Ин яке аз маъмултарин татбиқи модели ORM мебошад. Модели релясионии an objectӣ муносибатҳои байни an objectҳои нармафзор ва сабтҳоро дар пойгоҳи додаҳо тавсиф мекунад. Албатта, функсияи Hibernate хеле васеъ аст, аммо мо ба соддатарин вазифаҳо тамаркуз хоҳем кард. Ҳадафи мо: эҷод кардани барномаи CRUD (Эҷод, Хондан, Навсозӣ, Нобуд кардан), ки қодир аст:
  1. Эҷоди корбарон (Истифодабаранда), инчунин онҳоро дар пойгоҳи додаҳо аз рӯи ID ҷустуҷӯ кунед, маълумоти онҳоро дар пойгоҳи додаҳо нав кунед ва инчунин онҳоро аз пойгоҳи додаҳо нест кунед.
  2. Ба истифодабарандагон an objectҳои нақлиётро (Авто) таъин кунед. Мошинҳоро аз пойгоҳи додаҳо эҷод, таҳрир, пайдо ва нест кунед.
  3. Илова бар ин, барнома бояд ба таври худкор мошинҳои "ятим"-ро аз базаи маълумот хориҷ кунад. Онхое. Вақте ки корбар нест карда мешавад, ҳамаи мошинҳои ба ӯ тааллуқдошта низ бояд аз пойгоҳи додаҳо ҳазф карда шаванд.
Сохтори лоиҳаи мо чунин хоҳад буд: Аввалин барномаи Hibernate-и шумо - 2Тавре ки шумо мебинед, ҳеҷ чизи мураккаб нест. 6 синф + 1 файл бо танзимот. Аввалан, биёед дар Intellij Idea як лоиҳаи нави maven эҷод кунем. Файл -> Лоиҳаи нав. Аз намудҳои лоиҳаи пешниҳодшуда, Maven-ро интихоб кунед ва идома диҳед. Аввалин барномаи Hibernate-и шумо - 3Apache Maven чаҳорчӯба барои автоматикунонии маҷмӯи лоиҳаҳо дар асоси тавсифи сохтори онҳо дар файлҳо бо забони POM мебошад. Тамоми сохтори лоиҳаи шумо дар файли pom.xml тасвир карда мешавад, ки худи IDEA онро дар решаи лоиҳаи шумо эҷод мекунад. Дар танзимоти лоиҳа ба шумо лозим меояд, ки параметрҳои Maven - groupId ва artifactId -ро муайян кунед. Одатан дар лоиҳаҳои groupId номи созмон ё бахш аст ва номи домени созмон ё сайти лоиҳа дар онҷо навишта мешавад. Дар навбати худ, artifactId номи лоиҳа аст. Барои groupdId шумо метавонед муайян кунед com.вашНикнейм.javarush, ин ба ҳеҷ ваҷҳ ба кори барнома таъсир намерасонад. Барои artifactId ягон номи лоиҳаеро, ки ба шумо маъқул аст, интихоб кунед. Шумо инчунин метавонед Версияро бетағйир гузоред. Аввалин барномаи Hibernate-и шумо - 4Дар экрани охирин, танҳо маълумоти қаблан воридшударо тасдиқ кунед. Аввалин барномаи Hibernate - 5Ҳамин тавр, мо лоиҳаро офаридем, танҳо навиштани code ва кор кардани он боқӣ мемонад :) Аввалан, агар мо хоҳем, ки барномае созем, ки бо базаи маълумот кор мекунад, мо бешубҳа бе базаи маълумот кор карда наметавонем! PostgreSQL-ро аз ин ҷо зеркашӣ кунед (ман versionи 9-ро истифода мебарам). PostgreSQL корбари пешфарз "postgres" дорад, шумо бояд ҳангоми насб парол эҷод кунед. Пароли худро фаромӯш накунед, он ба мо дертар лозим мешавад! (Умуман, истифодаи пойгоҳи додаҳои пешфарз дар барномаҳо таҷрибаи бад аст, аммо барои кам кардани миқдори геморрой, мо бо эҷоди пойгоҳи додаи худамон кор хоҳем кард). Агар шумо бо сатри фармон ва дархостҳои SQL бароҳат набошед, хушхабаре ҳаст. Intellij IDEA интерфейси хеле мувофиқи корбарро барои кор бо пойгоҳи додаҳо таъмин мекунад. Чунин ба назар мерасад: Аввалин барномаи Hibernate - 6(дар панели рости IDEA, ҷадвали пойгоҳи додаҳо ҷойгир аст) Барои эҷод кардани пайвастшавӣ, "+" -ро клик кунед, провайдери моро (PostgeSQL) интихоб кунед. Майдонҳоро бо корбар, номи пойгоҳи додаҳо (ҳарду postgres) пур кунед ва паролеро, ки ҳангоми насби PostgreSQL муқаррар кардаед, ворид кунед. Агар лозим бошад, драйвери Postgres -ро зеркашӣ кунед, ин метавонад дар ҳамин саҳифа анҷом дода шавад. Барои санҷидани он, ки пайвастшавӣ ба пойгоҳи додаҳо муқаррар шудааст, "Пайвастшавии санҷиш" -ро клик кунед. Агар шумо навиштаҷоти "Муваффақият" -ро бинед, мо идома медиҳем. Акнун биёед ҷадвалҳоеро, ки ба мо лозим аст, созем. Ду нафари онҳо хоҳанд буд - корбарон ва автомобилҳо. Параметрҳо барои ҷадвали корбарон: Аввалин барномаи шумо дар Hibernate - 7Лутфан қайд кунед, ки id калиди асосӣ аст. Агар шумо намедонед, ки калиди ибтидоӣ дар SQL чист, онро Google ҷустуҷӯ кунед, ин муҳим аст. Танзимоти ҷадвали мошинҳо: Аввалин барномаи шумо дар Hibernate - 8Барои мошинҳо шумо бояд Калиди хориҷӣ - калиди хориҷиро танзим кунед. Он ҷадвалҳои моро пайваст мекунад. Ман ба шумо маслиҳат медиҳам, ки дар бораи ӯ бештар хонед; Ба таври содда гуем, он ба ҷадвали беруна, дар ҳолати мо, истифодабарандагон дахл дорад. Агар мошин ба корбари дорои id=1 тааллуқ дошта бошад, пас дар майдони user_id-и ҷадвали autos он дорои 1 мешавад. Ҳамин тавр мо корбаронро бо мошинҳои онҳо дар замимаи худ пайваст мекунем. Дар ҷадвали autos мо майдони user_id ҳамчун калиди хориҷӣ хидмат хоҳад кард. Он ба майдони id-и ҷадвали корбарон ишора мекунад. Аввалин барномаи Hibernate - 9Ҳамин тариқ, мо базаи маълумотро бо ду ҷадвал таъсис додем. Фаҳмидани он ки чӣ тавр онро аз рамзи Java идора кардан лозим аст. Мо бо файли pom.xml оғоз мекунем, ки дар он мо бояд китобхонаҳои заруриро дохил кунем (бо забони Maven онҳоро вобастагӣ меноманд). Ҳама китобхонаҳо дар анбори марказии Maven нигоҳ дошта мешаванд. Онҳое, ки шумо дар pom.xml муайян мекунед, шумо метавонед дар лоиҳа истифода баред. pom.xml-и шумо бояд чунин бошад: Аввалин барномаи Hibernate - 10Ҳеҷ чизи мураккабе нест, ки шумо мебинед. Мо танҳо 2 вобастагӣ илова кардем - барои истифодаи PostgreSQL ва Hibernate. Акнун биёед ба рамзи Java гузарем. Ҳама бастаҳо ва синфҳои заруриро барои лоиҳа эҷод кунед. Барои оғоз кардан, ба мо моделҳои додаҳо лозим аст - синфҳо Userва Auto.
package models;

import javax.persistence.*;
import java.util.ArrayList;
import java.util.List;

@Entity
@Table (name = "users")
public class User {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;
    @Column(name = "name")
    private String name;
    //you can not specify Column name if it matches the name of the column in the table
    private int age;

    @OneToMany(mappedBy = "user", cascade = CascadeType.ALL, orphanRemoval = true)
    private List<Auto> autos;

    public User() {
    }

    public User(String name, int age) {
        this.name = name;
        this.age = age;
        autos = new ArrayList<>();
    }

    public void addAuto(Auto auto) {
        auto.setUser(this);
        autos.add(auto);
    }

    public void removeAuto(Auto auto) {
        autos.remove(auto);
    }

    public int getId() {
        return id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public List<Auto> getAutos() {
        return autos;
    }

    public void setAutos(List<Auto> autos) {
        this.autos = autos;
    }

    @Override
    public String toString() {
        return "models.User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}
package models;

import javax.persistence.*;

@Entity
@Table(name = "autos")
public class Auto {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;

    @Column (name = "model")
    private String model;

    //you can not specify Column name if it matches the name of the column in the table
    private String color;


    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "user_id")
    private User user;

    public Auto() {
    }

    public Auto(String model, String color) {
        this.model = model;
        this.color = color;
    }

    public int getId() {
        return id;
    }

    public String getModel() {
        return model;
    }

    public void setModel(String model) {
        this.model = model;
    }

    public String getColor() {
        return color;
    }

    public void setColor(String color) {
        this.color = color;
    }

    public User getUser() {
        return user;
    }

    public void setUser(User user) {
        this.user = user;
    }

    @Override
    public String toString() {
        return color + " " + model;
    }
}
Тавре ки шумо мебинед, дарсҳо бо як қатор шарҳҳои то ҳол норавшан муҷаҳҳаз шудаанд. Биёед бо онҳо сар кунем. Шарҳи асосӣ барои мо @Entity аст. Дар бораи он дар Википедиа хонед ва ҳама чизро дар хотир доред, ин асоси асосҳост. Ин эзоҳ имкон медиҳад, ки an objectҳои Java-и синфи шумо бо пойгоҳи додаҳо алоқаманд бошанд. Барои он ки синф субъект бошад, он бояд ба талаботи зерин ҷавобгӯ бошад:
  • Бояд конструктори холӣ дошта бошад ( publicё protected);
  • Нест кардан мумкин нест, интерфейс ё enum;
  • -майдонҳо/хосиятҳо буда наметавонанд finalва дар бар гирифта наметавонанд ;final
  • Бояд ҳадди ақал як майдони @Id дошта бошад.
Синфҳои шахсии худро санҷед, инҳо ҷои хеле маъмул барои тирандозӣ ба пои худ ҳастанд. Фаромӯш кардани чизе хеле осон аст. Дар ин ҳолат, ташкилот метавонад:
  • Конструкторҳои холӣ надоранд;
  • мерос гирифтан ва мерос гирифтан;
  • Усулҳои дигарро дар бар гиред ва интерфейсҳоро татбиқ кунед.
Тавре ки шумо мебинед, синф Userба ҷадвали корбарон хеле монанд аст. Майдонхо мавчуданд id, name, age. Аннотацияҳои дар боло ҷойгиршуда ба шарҳи зиёд ниёз надоранд: аллакай маълум аст, ки @Id нишонаи он аст, ки майдон идентификатори an objectҳои ин синф аст. Шарҳи @Table дар болои синф номи ҷадвалеро, ки дар он an objectҳо навишта мешаванд, муайян мекунад. Ба шарҳи болои майдони синну сол диққат диҳед: агар номи майдон дар синф ва ҷадвал якхела бошад, ба шумо лозим нест, ки шарҳи @Column илова кунед, он чунин кор хоҳад кард. Оид ба "стратегия = GenerationType.IDENTITY" дар қавс нишон дода шудааст: якчанд стратегияҳои тавлиди ID мавҷуданд. Шумо метавонед онро дар Google ҷустуҷӯ кунед, аммо дар доираи барномаи мо ба шумо лозим нест, ки ташвиш кашед. Муҳим он аст, ки идентификаторҳои an objectҳои мо ба таври худкор тавлид мешаванд, аз ин рӯ танзимкунанда барои id вуҷуд надорад ва мо онро дар созанда низ муайян намекунем. Бо вуҷуди ин, синф то ҳол аз баъзе ҷиҳатҳо Userфарқ мекунад . Ӯ рӯйхати мошинҳо дорад! Тавсифи @OneToMany дар болои рӯйхат пайдо мешавад. Ин маънои онро дорад, ки як an objectи синфи корбар метавонад ба якчанд мошин мувофиқат кунад. Танзимоти "mappedBY" ба майдони корбари синф ишора мекунад Auto. Бо ин роҳ, мошинҳо ва истифодабарандагон ба ҳамдигар пайваст мешаванд. Параметри orphanRemoval аз забони англисӣ хеле хуб тарҷума шудааст - "бардоштани ятимон". Агар мо корбарро аз пойгоҳи додаҳо нест кунем, ҳамаи мошинҳои бо ӯ алоқаманд низ нест карда мешаванд. Дар навбати худ, шумо дар синф Autoмайдони корбарро бо шарҳи @ManyToOne (бисёр Автомобилҳо метавонанд ба як корбар мувофиқат кунанд) ва шарҳи @JoinColumn хоҳед дид. Он нишон медиҳад, ки тавассути кадом сутуни ҷадвали autos пайвастшавӣ бо ҷадвали корбарон сурат мегирад (ҳамон калиди хориҷӣ, ки мо дар бораи он қаблан гуфта будем). Пас аз эҷоди модели додаҳо, вақти он расидааст, ки барномаи моро таълим диҳад, ки амалиётро бо ин додаҳо дар пойгоҳи додаҳо иҷро кунад. Биёед бо синфи утorтаи HibernateSessionFactoryUtil оғоз кунем. Он танҳо як вазифа дорад - сохтани як заводи сеанс барои барномаи мо барои кор бо базаи маълумот (салом, намунаи "Завод!"). Вай дигар коре карда наметавонад.
package utils;

import models.Auto;
import models.User;
import org.hibernate.SessionFactory;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;

public class HibernateSessionFactoryUtil {
    private static SessionFactory sessionFactory;

    private HibernateSessionFactoryUtil() {}

    public static SessionFactory getSessionFactory() {
        if (sessionFactory == null) {
            try {
                Configuration configuration = new Configuration().configure();
                configuration.addAnnotatedClass(User.class);
                configuration.addAnnotatedClass(Auto.class);
                StandardServiceRegistryBuilder builder = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties());
                sessionFactory = configuration.buildSessionFactory(builder.build());

            } catch (Exception e) {
                System.out.println("Exception!" + e);
            }
        }
        return sessionFactory;
    }
}
Дар ин синф, мо як an objectи конфигуратсияи нави конфигуратсияро эҷод мекунем ва ба он синфҳое мегузарем, ки онҳо бояд ҳамчун an objectҳо қабул кунанд - Userва Auto. Ба усул диққат диҳед configuration.getProperties(). Кадом хосиятҳои дигар? Дар куҷо? Хусусиятҳо параметрҳое мебошанд, ки чӣ тавр дар ҳолати интизорӣ кор мекунанд, ки дар файли махсуси hibernate.cfg.xml нишон дода шудаанд. Аввалин барномаи Hibernate - 11Hibernate.cfg.xml дар ин ҷо хонда мешавад: new Configuration().configure(); Тавре ки шумо мебинед, дар он ҳеҷ чизи махсус вуҷуд надорад - параметрҳои пайвастшавӣ ба пойгоҳи додаҳо ва параметри махсуси show_sql. Он барои он лозим аст, ки ҳама дархостҳои SQL, ки дар ҳолати интизорӣ бар зидди пойгоҳи додаи мо иҷро мешаванд, ба консол бароварда шаванд. Бо ин роҳ, шумо аниқ хоҳед дид, ки Hibernate дар ҳар лаҳза чӣ кор карда истодааст ва аз эффекти "ҷодугарӣ" халос шавед. Минбаъд ба мо синф лозим аст UserDAO. (Ба таври хуб, шумо бояд тавассути интерфейсҳо барномарезӣ кунед - интерфейс эҷод кунед UserDAOва онро алоҳида амалӣ кунед UserDAOImpl, аммо барои кам кардани миқдори code ман инро сарфи назар мекунам. Дар лоиҳаҳои воқеӣ ин корро накунед!). DAO (an objectи дастрасии додаҳо) яке аз маъмултарин намунаҳои тарроҳии "Дастрасӣ ба маълумот" мебошад. Маънои он оддӣ аст - сохтани қабат дар барнома, ки танҳо барои дастрасӣ ба додаҳо масъул аст, на чизи дигар. Маълумотро аз пойгоҳи додаҳо гиред, маълумотро нав кунед, маълумотро нест кунед - ва ҳамин тавр. Дар бораи DAOs бештар хонед; шумо онҳоро дар кори худ доимо истифода хоҳед бурд. Синфи мо чӣ кор карда метавонад UserDao? Дар асл, мисли ҳама DAO, он метавонад танҳо бо маълумот кор кунад. Корбарро аз рӯи ID ёбед, маълумоти ӯро навсозӣ кунед, ӯро нест кунед, рӯйхати ҳамаи корбаронро аз пойгоҳи додаҳо берун кунед ё корбари навро дар пойгоҳи дода захира кунед - ин ҳама функсияҳои он аст.
package dao;

import models.Auto;
import models.User;
import org.hibernate.Session;
import org.hibernate.Transaction;
import utils.HibernateSessionFactoryUtil;
import java.util.List;

public class UserDao {

    public User findById(int id) {
        return HibernateSessionFactoryUtil.getSessionFactory().openSession().get(User.class, id);
    }

    public void save(User user) {
        Session session = HibernateSessionFactoryUtil.getSessionFactory().openSession();
        Transaction tx1 = session.beginTransaction();
        session.save(user);
        tx1.commit();
        session.close();
    }

    public void update(User user) {
        Session session = HibernateSessionFactoryUtil.getSessionFactory().openSession();
        Transaction tx1 = session.beginTransaction();
        session.update(user);
        tx1.commit();
        session.close();
    }

    public void delete(User user) {
        Session session = HibernateSessionFactoryUtil.getSessionFactory().openSession();
        Transaction tx1 = session.beginTransaction();
        session.delete(user);
        tx1.commit();
        session.close();
    }

    public Auto findAutoById(int id) {
        return HibernateSessionFactoryUtil.getSessionFactory().openSession().get(Auto.class, id);
    }

    public List<User> findAll() {
        List<User> users = (List<User>)  HibernateSessionFactoryUtil.getSessionFactory().openSession().createQuery("From User").list();
        return users;
    }
}
Усулҳо UserDaoба ҳамдигар монанданд. Дар аксари онҳо, мо бо истифода аз Factory Session-и худ an objectи Session (сеанси пайвастшавӣ ба пойгоҳи додаи мо) мегирем, дар дохor ин сессия як транзаксия эҷод мекунем, тағироти зарурии маълумотро иҷро мекунем, натиҷаи транзаксияро дар базаи маълумот захира мекунем ва сессияро мепӯшем. Усулҳои худ, чунон ки шумо мебинед, хеле соддаанд. DAO "дor" аризаи мост. Аммо, мо DAO-ро мустақиман эҷод намекунем ва усулҳои онро дар main(). Ҳама мантиқ ба UserService.
package services;

import dao.UserDao;
import models.Auto;
import models.User;

import java.util.List;

public class UserService {

    private UserDao usersDao = new UserDao();

    public UserService() {
    }

    public User findUser(int id) {
        return usersDao.findById(id);
    }

    public void saveUser(User user) {
        usersDao.save(user);
    }

    public void deleteUser(User user) {
        usersDao.delete(user);
    }

    public void updateUser(User user) {
        usersDao.update(user);
    }

    public List<User> findAllUsers() {
        return usersDao.findAll();
    }

    public Auto findAutoById(int id) {
        return usersDao.findAutoById(id);
    }


}
Хидмат як қабати додаҳо дар барнома аст, ки барои иҷрои мантиқи тиҷорат масъул аст. Агар барномаи шумо бояд мантиқи тиҷоратиро иҷро кунад, он онро тавассути хидматҳо иҷро мекунад. Хизмат дар дохor худ дорад UserDaoва усулҳои DAO-ро дар усулҳои худ даъват мекунад. Ин метавонад ба назари шумо такрори функсияҳо ба назар расад (чаро на танҳо усулҳоро аз an objectи дао даъват кунед), балки бо миқдори зиёди an objectҳо ва мантиқи мураккаб тақсим кардани барнома ба қабатҳо фоидаи калон дорад (ин таҷрибаи хуб аст, ин маълумотро барои оянда ва дар бораи "қабатҳои барномаҳо" хонед "). Дар хидмати мо мантиқ оддӣ аст, аммо дар лоиҳаҳои воқеӣ усулҳои хидматрасонӣ беш аз як сатри codeро дар бар мегиранд :) Ҳоло мо ҳама чизеро дорем, ки барои кор кардани барнома лозим аст! Биёед main()дар усул барои ӯ корбар ва мошинҳоро эҷод кунем, онҳоро бо ҳам пайваст кунем ва дар базаи маълумот захира кунем.
import models.Auto;
import models.User;
import services.UserService;

import java.sql.SQLException;

public class Main {
    public static void main(String[] args) throws SQLException {

        UserService userService = new UserService();
        User user = new User("Masha",26);
        userService.saveUser(user);
        Auto ferrari = new Auto("Ferrari", "red");
        ferrari.setUser(user);
        user.addAuto(ferrari);
        Auto ford = new Auto("Ford", "black");
        ford.setUser(user);
        user.addAuto(ford);
        userService.updateUser(user);
    }
}
Тавре ки шумо мебинед, ҷадвали корбарон дорои вуруди худ ва ҷадвали autos мебошад. Аввалин барномаи Hibernate - 13Ваше первое приложение на Hibernate - 14Биёед кӯшиш кунем, ки номи корбари худро иваз кунем. Биёед ҷадвали корбаронро тоза кунем ва codeро иҷро кунем
import models.Auto;
import models.User;
import services.UserService;

import java.sql.SQLException;

public class Main {
    public static void main(String[] args) throws SQLException {

        UserService userService = new UserService();
        User user = new User("Masha",26);
        userService.saveUser(user);
        Auto ferrari = new Auto("Ferrari", "red");
        user.addAuto(ferrari);
        Auto ford = new Auto("Ford", "black");
        ford.setUser(user);
        user.addAuto(ford);
        userService.updateUser(user);
        user.setName("Sasha");
        userService.updateUser(user);
    }
}
Кор мекунад! Ваше первое приложение на Hibernate - 15Чӣ мешавад, агар шумо корбарро нест кунед? Биёед ҷадвали корбаронро тоза кунем (автоҳо худашро тоза мекунанд) ва codeро иҷро кунем
import models.Auto;
import models.User;
import services.UserService;

import java.sql.SQLException;

public class Main {
    public static void main(String[] args) throws SQLException {

        UserService userService = new UserService();
        User user = new User("Masha",26);
        userService.saveUser(user);
        Auto ferrari = new Auto("Ferrari", "red");
        user.addAuto(ferrari);
        Auto ford = new Auto("Ford", "black");
        ford.setUser(user);
        user.addAuto(ford);
        userService.updateUser(user);
        user.setName("Sasha");
        userService.updateUser(user);
        userService.deleteUser(user);
    }
}
Ва ҷадвалҳои мо комилан холӣ ҳастанд (ба консол диққат диҳед, ҳама дархостҳое, ки Hibernate иҷро кардаанд, дар он ҷо намоиш дода мешаванд). Шумо метавонед бо барнома бозӣ кунед ва тамоми хусусиятҳои онро санҷед. Масалан, корбареро бо мошинҳо эҷод кунед, онро дар пойгоҳи додаҳо захира кунед, бубинед, ки ба он чӣ ID таъин шудааст ва бо истифода аз усули main()"кашидани" корбар аз пойгоҳи додаҳо бо ин id ва намоиш додани рӯйхати мошинҳои ӯро дар консол истифода баред . Албатта, мо танҳо як қисми хурди фаъолияти Hibernate-ро дидем. Имкониятҳои он хеле васеъанд ва он муддати тӯлонӣ яке аз стандартҳои саноатӣ барои рушди Java мебошад. Агар шумо хоҳед, ки онро муфассал омӯзед, ман метавонам китоби "Java Persistence API and Hibernate" -ро тавсия диҳам, ки ман онро дар яке аз мақолаҳои қаблии худ дида будам . Умедворам, ки ин мақола барои хонандагон муфид буд. Агар шумо ягон савол дошта бошед, аз онҳо дар шарҳҳо пурсед, ман бо омодагӣ ҷавоб медиҳам :) Инчунин, дастгирӣ кардани муаллифро дар озмун бо "Лайк" кардан фаромӯш накунед. Ё беҳтараш - "Ба ман хеле маъқул аст" :) Дар таҳсилатон барори кор!
Шарҳҳо
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION