Crud Hibernate với JSP Archives - Cao Đẳng FPT M?ng c c??c bng ? xét tuyển //westview-heights.com/tag/crud-hibernate-voi-jsp Cao Đẳng FPT M?ng c c??c bng ? tuyển sinh theo hình thức xét tuyển h?sơ. Tiêu chí đào tạo: Thực học ?Thực nghiệp! Sat, 29 Jul 2023 16:55:00 +0000 vi hourly 1 //wordpress.org/?v=6.4.1 //westview-heights.com/wp-content/uploads/cropped-logo-fpt-32x32.png Crud Hibernate với JSP Archives - Cao Đẳng FPT M?ng c c??c bng ? xét tuyển //westview-heights.com/tag/crud-hibernate-voi-jsp 32 32 Crud Hibernate với JSP Archives - Cao Đẳng FPT M?ng c c??c bng ? xét tuyển //westview-heights.com/tin-tuc-poly/ha-noi-tin-sinh-vien/tim-hieu-ve-crud-hibernate-voi-jsp-servlet-phan-2.html //westview-heights.com/tin-tuc-poly/ha-noi-tin-sinh-vien/tim-hieu-ve-crud-hibernate-voi-jsp-servlet-phan-2.html#respond Mon, 24 Jul 2023 08:33:46 +0000 //westview-heights.com/?p=245678 Tiếp nối phần 1 v?Crud Hibernate với JSP, Servlet đã hướng dẫn các bạn cách thiết lập d?án, tạo database trong mysql. ?bài viết này chúng ta s?tìm hiểu v?cách Config hibernate, hiển th? thêm ...

The post Tìm hiểu v?CRUD Hibernate với JSP, Servlet (Phần 2) appeared first on Cao Đẳng FPT M?ng c c??c bng ? xét tuyển.

]]>
Tiếp nối phần 1 v?Crud Hibernate với JSP, Servlet đã hướng dẫn các bạn cách thiết lập d?án, tạo database trong mysql. ?bài viết này chúng ta s?tìm hiểu v?cách Config hibernate, hiển th? thêm vào, sửa và xóa sản phẩm. Hãy cùng nghiên cứu nhé!

HibernateUtil.java

private static final SessionFactory FACTORY;

    static {

        Configuration conf = new Configuration();

        Properties properties = new Properties();

        properties.put(Environment.DIALECT, “org.hibernate.dialect.SQLServerDialect”);

        properties.put(Environment.DRIVER, “com.microsoft.sqlserver.jdbc.SQLServerDriver”);

        properties.put(Environment.URL, “jdbc:sqlserver://localhost:1433;databaseName=demohibernate;encrypt=true;trustServerCertificate=true”);

        properties.put(Environment.USER, “demo”);

        properties.put(Environment.PASS, “1234567890”);

        properties.put(Environment.SHOW_SQL, “true”);

         //gen DB t?động

        properties.put(Environment.HBM2DDL_AUTO, “create”);

        conf.setProperties(properties);

        conf.addAnnotatedClass(SanPham.class);

        ServiceRegistry registry = new StandardServiceRegistryBuilder()

                .applySettings(conf.getProperties()).build();

        FACTORY = conf.buildSessionFactory(registry);

    }

    public static SessionFactory getFACTORY() {

        return FACTORY;

    }

    public static void main(String[] args) {

        System.out.println(getFACTORY());

    }

Chú ý: Thay đổi user name và password của sql server của mình. 

properties.put(Environment.USER, “demo”);

properties.put(Environment.PASS, “1234567890”);

Bạn có th?tạo table trực tiếp trong sql server hoặc đ?hibernate t?tạo table: 

tạo table t?động(sau mỗi lần chạy s?tạo lại table)

 properties.put(Environment.HBM2DDL_AUTO, “create”);

 

 b?tạo table t?động

 properties.put(Environment.HBM2DDL_AUTO, “none”);

Hiển th?Sản phẩm

SanPhamRespone.java

private int id;

    private String ten;

    private float gia;

    public SanPhamRespone(int id, String ten, float gia) {

        this.id = id;

        this.ten = ten;

        this.gia = gia;

    }

    public SanPhamRespone() {

    }

    public int getId() {

        return id;

    }

    public void setId(int id) {

        this.id = id;

    }

    public String getTen() {

        return ten;

    }

    public void setTen(String ten) {

        this.ten = ten;

    }

    public float getGia() {

        return gia;

    }

    public void setGia(float gia) {

        this.gia = gia;

    }

SanPhamRepository.java

public class SanPhamRepository {

    public List<SanPhamRespone> getAll() {

        List<SanPhamRespone> sanPhams = new ArrayList<>();

        try (Session session = HibernateUtil.getFACTORY().openSession()) {

            Query query = session.createQuery(“SELECT new com.example.demo.response.SanPhamRespone(sp.id, sp.ten, sp.gia) FROM SanPham sp”, SanPhamRespone.class);

            sanPhams = query.getResultList();

        } catch (Exception e) {

            e.printStackTrace(System.out);

        }

        return sanPhams;

    }

  }

SanPhamService.java

public interface SanPhamService {

    

    List<SanPhamRespone> getAll();

  }

SanPhamSerViceImpl.java

public class SanPhamSerViceImpl implements SanPhamService {

    private SanPhamRepository sanPhamRepository = new SanPhamRepository();

    

    @Override

    public List<SanPhamRespone> getAll() {

        return sanPhamRepository.getAll();

    }

 }

SanPhamController.java

@WebServlet(name = “Servlet”, value = {“/san-pham/hien-thi”, “/san-pham/add-update”, “/san-pham/delete”, “/san-pham/detail”})

public class SanPhamController extends HttpServlet {

    private SanPhamService sanPhamService = new SanPhamSerViceImpl();

     @Override

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        String uri = request.getRequestURI();

        if (uri.contains(“hien-thi”)) {

            this.hienThiSanPham(request, response);

        } else if (uri.contains(“detail”)) {

       //     this.detailSanPham(request, response);

        } else {

          //  this.deleteSanPham(request, response);

        }

    }

    

      private void hienThiSanPham(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        List<SanPhamRespone> sanPhamRespones = sanPhamService.getAll();

        request.setAttribute(“sanPhamRespones”, sanPhamRespones);

        request.getRequestDispatcher(“/view/san-pham.jsp”).forward(request, response);

    }

}

san-pham.jsp

Chú ý: 

  • Bạn cần import <%@ taglib prefix=”c?uri=”http://java.sun.com/jsp/jstl/core?%> trên đầu file
  • Item: thông tin lặp, var: tên của biến đ?hiển th?trạng thái vòng lặp. 
san-pham.jsp

Thêm mới sản phẩm

SanPhamRequest.java

private String ten;

    private String gia;

    public SanPhamRequest(String ten, String gia) {

        this.ten = ten;

        this.gia = gia;

    }

    public SanPhamRequest() {

    }

    public String getTen() {

        return ten;

    }

    public void setTen(String ten) {

        this.ten = ten;

    }

    public String getGia() {

        return gia;

    }

    public void setGia(String gia) {

        this.gia = gia;

    }

SanPhamRepository.java

public boolean add(SanPham sanPham){

        Transaction transaction = null;

        try (Session session = HibernateUtil.getFACTORY().openSession()){

            transaction = session.beginTransaction();

            session.persist(sanPham);

            // cách 2

            // session.save(sanPham);

            // cách 3

            // session.saveOrUpdate(sanPham);

            transaction.commit();

        } catch (Exception e) {

            return false;

        }

        return true;

    }

SanPhamService.java

 HashMap<String, String> add(SanPhamRequest request) ;

SanPhamSerViceImpl.java

@Override

    public HashMap<String, String> add(SanPhamRequest request) {

        HashMap<String, String> lists = new HashMap<>();

        // Check validate

        if (StringUtils.isEmpty(request.getTen())) {

            lists.put(“GIA_EMPTY”, “Vui lòng nhập giá”);

        }

        if (StringUtils.isEmpty(request.getGia())) {

            lists.put(“TEN_EMPTY”, “Tên sản Phẩm không được đ?trống”);

        }

        // Khi tho?mãn validate

        if (lists.isEmpty()) {

            SanPham sanPham = new SanPham();

            sanPham.setTen(request.getTen());

            sanPham.setGia(Float.parseFloat(request.getGia()));

            sanPhamRepository.add(sanPham);

        }

        return  lists;

    }

SanPhamController.java

@Override

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        String uri = request.getRequestURI();

        if (uri.contains(“add-update”)) {

            this.addOrUpdateLopHoc(request, response);

        }

    }

    // url: //localhost8080/sanPham/add-update?id= &ten=ao1&gia=12

    //?id= &ten=ao1&gia=12 là các request parameter: id, ten, gia

     private void addOrUpdateLopHoc(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {

        String ten = request.getParameter(“ten”);

        String gia = request.getParameter(“gia”);

        SanPhamRequest sanPhamRequest = new SanPhamRequest();

        sanPhamRequest.setTen(ten);

        sanPhamRequest.setGia(gia);

            // hiển th?các lỗi trên form 

            HashMap<String, String> errors = sanPhamService.add(sanPhamRequest);

            request.setAttribute(“errors”, errors);

            // hiển th?lại data lên trên table 

            List<SanPhamRespone> sanPhamRespones = sanPhamService.getAll();

            request.setAttribute(“sanPhamRespones”, sanPhamRespones);

            

            request.getRequestDispatcher(“/view/san-pham.jsp”).forward(request, response);    

    }

san-pham.jsp

Lưu ý: trong input phải có tên của request trùng với thuộc tính trong SanPhamRequest.

san-pham.jsp

Sửa sản phẩm

SanPhamRepository.java

public SanPham getOne(int id){

        SanPham sanPham = null;

        Transaction transaction = null;

        try (Session session = HibernateUtil.getFACTORY().openSession()){

            transaction = session.beginTransaction();

            sanPham = session.get(SanPham.class, id);

            transaction.commit();

        } catch (Exception e) {

        }

        return sanPham;

    }

   

    public SanPhamRespone findById(int id){

        SanPhamRespone sanPham = null;

        Transaction transaction = null;

        try (Session session = HibernateUtil.getFACTORY().openSession()){

            transaction = session.beginTransaction();

            Query query = session.createQuery(“SELECT new com.example.demo.response.SanPhamRespone(sp.id, sp.ten, sp.gia) FROM SanPham sp WHERE sp.id = :id”, SanPhamRespone.class);

            query.setParameter(“id”, id);

            sanPham = (SanPhamRespone) query.getSingleResult();

            transaction.commit();

        } catch (Exception e) {

        }

        return sanPham;

    }

    

    public Boolean update(SanPham sanPham) {

        Transaction transaction = null;

        try (Session session = HibernateUtil.getFACTORY().openSession()) {

            transaction = session.beginTransaction();

            session.merge(sanPham);

            // cách 2

            // session.saveOrUpdate(sanPham);

            transaction.commit();

            return true;

        } catch (Exception e) {

            e.printStackTrace(System.out);

        }

        return false;

    }

SanPhamService.java

SanPhamRespone findById(int id);

HashMap<String, String> update(SanPhamRequest request, int id);

SanPhamSerViceImpl.java

@Override

    public SanPhamRespone findById(int id) {

        return sanPhamRepository.findById(id);

    }

    @Override

    public HashMap<String, String> update(SanPhamRequest request, int id) {

        HashMap<String, String> lists = new HashMap<>();

        SanPham updateSanPham = sanPhamRepository.getOne(id);

        // Check validate

        if (StringUtils.isEmpty(request.getTen())) {

            lists.put(“GIA_EMPTY”, “Vui lòng nhập giá”);

        }

        if (StringUtils.isEmpty(request.getGia())) {

            lists.put(“TEN_EMPTY”, “Tên sản Phẩm không được đ?trống”);

        }

        if(updateSanPham == null){

            lists.put(“San_PHAM_EXIST”, “Id không tồn tại”);

        }

        // Khi tho?mãn validate

        if (lists.isEmpty()) {

            updateSanPham.setTen(request.getTen());

            updateSanPham.setGia(Float.parseFloat(request.getGia()));

            sanPhamRepository.update(updateSanPham);

        }

        return  lists;

    }

SanPhamController.java

@Override

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        String uri = request.getRequestURI();

        if (uri.contains(“hien-thi”)) {

            this.hienThiSanPham(request, response);

        } else if (uri.contains(“detail”)) {

            this.detailSanPham(request, response);

        } else {

            this.deleteSanPham(request, response);

        }

    }

    

    @Override

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        String uri = request.getRequestURI();

        if (uri.contains(“add-update”)) {

            this.addOrUpdateLopHoc(request, response);

        }

    }

    // hiển th?chi tiết sản phẩm cần update 

    private void detailSanPham(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {

        String id = request.getParameter(“id”);

        SanPhamRespone sanPhamRespone = sanPhamService.findById(Integer.parseInt(id));

        List<SanPhamRespone> sanPhamRespones = sanPhamService.getAll();

        request.setAttribute(“sanPhamRespone”, sanPhamRespone);

        request.setAttribute(“sanPhamRespones”, sanPhamRespones);

        request.getRequestDispatcher(“/view/san-pham.jsp”).forward(request, response);

    }

    // update hoặc lưu 

    private void addOrUpdateLopHoc(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {

        String id = request.getParameter(“id”);

        String ten = request.getParameter(“ten”);

        String gia = request.getParameter(“gia”);

        SanPhamRequest sanPhamRequest = new SanPhamRequest();

        sanPhamRequest.setTen(ten);

        sanPhamRequest.setGia(gia);

        // nếu id = rỗng thì s?thực hiện lưu sản phẩm và ngược lại 

        if(id.isEmpty()){

            HashMap<String, String> errors = sanPhamService.add(sanPhamRequest);

            request.setAttribute(“errors”, errors);

            List<SanPhamRespone> sanPhamRespones = sanPhamService.getAll();

            request.setAttribute(“sanPhamRespones”, sanPhamRespones);

request.getRequestDispatcher(“/view/san-pham.jsp”).forward(request, response);

        }else{

            HashMap<String, String> errors = sanPhamService.update(sanPhamRequest, Integer.parseInt(id));

            request.setAttribute(“errors”, errors);

            List<SanPhamRespone> sanPhamRespones = sanPhamService.getAll();

            request.setAttribute(“sanPhamRespones”, sanPhamRespones);

            request.getRequestDispatcher(“/view/san-pham.jsp”).forward(request, response);

        }

    }

Delete sản phẩm

SanPhamRepository.java

public boolean delete(SanPham sanPham){

        Transaction transaction = null;

        try (Session session = HibernateUtil.getFACTORY().openSession()){

            transaction = session.beginTransaction();

            session.delete(sanPham);

            transaction.commit();

        } catch (Exception e) {

            return false;

        }

        return true;

    }

SanPhamService.java

  boolean delete(int id);

SanPhamSerViceImpl.java

@Override

    public boolean delete(int id) {

       SanPham sanPham = sanPhamRepository.getOne(id);

       return sanPhamRepository.delete(sanPham);

    }

SanPhamController.java

@Override

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        String uri = request.getRequestURI();

        if (uri.contains(“hien-thi”)) {

            this.hienThiSanPham(request, response);

        } else if (uri.contains(“detail”)) {

            this.detailSanPham(request, response);

        } else {

            this.deleteSanPham(request, response);

        }

    }

    private void deleteSanPham(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        String id = request.getParameter(“id”);

        sanPhamService.delete(Integer.parseInt(id));

        List<SanPhamRespone> sanPhamRespones = sanPhamService.getAll();

        request.setAttribute(“sanPhamRespones”, sanPhamRespones);

        request.getRequestDispatcher(“/view/san-pham.jsp”).forward(request, response);

    }

Tóm lại, trong 2 bài viết v?cách CRUD Hibernate với JSP đã hướng dẫn các bạn v?quy trình s?dụng Hibernate đ?tạo một d?án. Bài viết hướng dân đầy đ?các bước t?thiết lập d?án, tạo các lớp thực th? tạo database trong mysql, config hibernate, hiển th?Sản phẩm, thêm mới sản phẩm, sửa sản phẩm, delete sản phẩm.

B?môn Ứng dụng phần mềm
Trường Cao đẳng FPT M?ng c c??c bng ? cơ s?Hà Nội

The post Tìm hiểu v?CRUD Hibernate với JSP, Servlet (Phần 2) appeared first on Cao Đẳng FPT M?ng c c??c bng ? xét tuyển.

]]>
//westview-heights.com/tin-tuc-poly/ha-noi-tin-sinh-vien/tim-hieu-ve-crud-hibernate-voi-jsp-servlet-phan-2.html/feed 0
Crud Hibernate với JSP Archives - Cao Đẳng FPT M?ng c c??c bng ? xét tuyển //westview-heights.com/tin-tuc-poly/ha-noi-tin-sinh-vien/tim-hieu-ve-crud-hibernate-voi-jsp-servlet-phan-1.html //westview-heights.com/tin-tuc-poly/ha-noi-tin-sinh-vien/tim-hieu-ve-crud-hibernate-voi-jsp-servlet-phan-1.html#respond Mon, 24 Jul 2023 07:24:31 +0000 //westview-heights.com/?p=245658 Hibernate là một khung công tác Java triển khai mẫu thiết k?ORM (ánh x?quan h?đối tượng). Nó được s?dụng đ?ánh x?các đối tượng java vào cơ s?d?liệu quan h?(relationship) và s?...

The post Tìm hiểu v?CRUD Hibernate với JSP, Servlet (Phần 1) appeared first on Cao Đẳng FPT M?ng c c??c bng ? xét tuyển.

]]>
Hibernate là một khung công tác Java triển khai mẫu thiết k?ORM (ánh x?quan h?đối tượng). Nó được s?dụng đ?ánh x?các đối tượng java vào cơ s?d?liệu quan h?(relationship) và s?dụng nội b?JDBC (kết nối cơ s?d?liệu Java), JTA (API giao dịch Java) và JNDI (giao diện thư mục và đặt tên Java).

Hibernate là gì?

Hibernate giúp cho các đối tượng java tồn tại trong cơ s?d?liệu mà không mất trạng thái của chúng, do đó nó được đặt tên là Hibernate. Hibernate có th?được s?dụng đ?thực hiện tất c?các hoạt động Crud mà không cần phải viết các truy vấn SQL. Crud đ?cập đến các hoạt động cơ s?d?liệu.

JSP là gì?

Java Server Pages (JSP) là một công ngh?cho phép các nhà phát triển tạo các trang web động bằng cách s?dụng kết hợp mã HTML, XML và Java. Các trang JSP được thực thi trên máy ch?web và kết qu?đầu ra được gửi đến trình duyệt web của máy khách.

JSP cung cấp một cách đ?d?dàng truy cập mã Java và các đối tượng t?bên trong một trang web, giúp đơn giản hóa việc tạo các trang web động. Các trang JSP thường được s?dụng cùng với các servlet Java x?lý x?lý d?liệu và các yêu cầu của máy khách. JSP là một phần của nền tảng Java EE và được hầu hết các máy ch?web và b?chứa servlet h?tr?

JSP có gì?

Cấu trúc thư mục

Đầu tiên là cấu trúc thư mục như hình dưới đây:

Thiết lập d?án

Bạn cần bao gồm các ph?thuộc sau trong tập lệnh pom.xml

<dependencies>

        <dependency>

            <groupId>jakarta.servlet</groupId>

            <artifactId>jakarta.servlet-api</artifactId>

            <version>5.0.0</version>

            <scope>provided</scope>

        </dependency>

        <dependency>

            <groupId>org.junit.jupiter</groupId>

            <artifactId>junit-jupiter-api</artifactId>

            <version>${junit.version}</version>

            <scope>test</scope>

        </dependency>

        <dependency>

            <groupId>org.junit.jupiter</groupId>

            <artifactId>junit-jupiter-engine</artifactId>

            <version>${junit.version}</version>

            <scope>test</scope>

        </dependency>

        <dependency>

            <groupId>com.microsoft.sqlserver</groupId>

            <artifactId>mssql-jdbc</artifactId>

            <version>9.4.1.jre16</version>

        </dependency>

        <dependency>

            <groupId>org.hibernate</groupId>

            <artifactId>hibernate-search-orm</artifactId>

            <version>5.8.2.Final</version>

        </dependency>

        <dependency>

            <groupId>jakarta.persistence</groupId>

            <artifactId>jakarta.persistence-api</artifactId>

            <version>3.1.0</version>

        </dependency>

        <dependency>

            <groupId>jakarta.xml.bind</groupId>

            <artifactId>jakarta.xml.bind-api</artifactId>

            <version>2.3.2</version>

        </dependency>

        <!– //mvnrepository.com/artifact/org.apache.taglibs/taglibs-standard-impl –>

        <dependency>

            <groupId>org.apache.taglibs</groupId>

            <artifactId>taglibs-standard-impl</artifactId>

            <version>1.2.5</version>

            <scope>runtime</scope>

        </dependency>

        <!– //mvnrepository.com/artifact/org.apache.taglibs/taglibs-standard-spec –>

        <dependency>

            <groupId>org.apache.taglibs</groupId>

            <artifactId>taglibs-standard-spec</artifactId>

            <version>1.2.5</version>

        </dependency>

        <dependency>

            <groupId>jakarta.servlet.jsp.jstl</groupId>

            <artifactId>jakarta.servlet.jsp.jstl-api</artifactId>

            <version>3.0.0</version>

        </dependency>

        <dependency>

            <groupId>org.glassfish.web</groupId>

            <artifactId>jakarta.servlet.jsp.jstl</artifactId>

            <version>2.0.0</version>

        </dependency>

    </dependencies>

Tạo các lớp thực th?/b>

SanPham.java

@Table(name=”san_pham”)

@Entity

public class SanPham {

    

    @Id

    @Column(name = “id”)

    @GeneratedValue(strategy = GenerationType.IDENTITY)

    private int id;

    

    @Column(name = “ten”)

    private String ten;

    

    @Column(name = “gia”)

    private float gia;

    public SanPham(int id, String ten, float gia) {

        this.id = id;

        this.ten = ten;

        this.gia = gia;

    }

    public SanPham() {

    }

    public int getId() {

        return id;

    }

    public void setId(int id) {

        this.id = id;

    }

    public String getTen() {

        return ten;

    }

    public void setTen(String ten) {

        this.ten = ten;

    }

    public float getGia() {

        return gia;

    }

    public void setGia(float gia) {

        this.gia = gia;

    }

    

    

}

Chú thích

@Entity xác định lớp hiện tại là một entity.
@Table xác định tên bảng ánh x?sang.
@Id xác định thuộc tính hiện tại là ID trong bảng CSDL.
@GeneratedValue xác định kiểu sinh khóa chính t?động, ?đây là IDENTITY.
@Column xác định thuộc tính hiện tại là một cột trong CSDL.

Tạo database trong mysql

create database demohibernate

B?môn Ứng dụng phần mềm
Trường Cao đẳng FPT M?ng c c??c bng ? cơ s?Hà Nội

The post Tìm hiểu v?CRUD Hibernate với JSP, Servlet (Phần 1) appeared first on Cao Đẳng FPT M?ng c c??c bng ? xét tuyển.

]]>
//westview-heights.com/tin-tuc-poly/ha-noi-tin-sinh-vien/tim-hieu-ve-crud-hibernate-voi-jsp-servlet-phan-1.html/feed 0