【问题标题】:Easy way to store Java objects to MySQL? [closed]将Java对象存储到MySQL的简单方法? [关闭]
【发布时间】:2014-01-14 14:11:12
【问题描述】:

假设我有这种 Java 对象:

String brand = "Toyota";
String model = "Corolla";
int year = "2013";

CarBean car = new CarBean(brand, model, year);

如何轻松地将这个对象存储到 MySQL?我已经成功地完成了 JDBC 并且表正在工作,但总有一些东西让我白发苍苍。

使用 NetBeans 和 MySQL 来回存储/检索数据有什么简单(但至少是半专业的)方法?

【问题讨论】:

  • Netbeans 与它无关。 让[你]白发的原因是什么

标签: java mysql database


【解决方案1】:

在您的数据库中创建一个表,例如名为 Cars 的表,该表具有适合您的域类 CarBean 的适当格式。然后使用PreparedStatement 插入行。

Connection con = ... // get a connection
PreparedStatement ps = con.prepareStatement("INSERT INTO Cars (brand, model, year) VALUES (?, ?, ?)");
ps.setString(1, carBean.getBrand());
ps.setString(2, carBean.getModel());
ps.setInt(3, carBean.getYear());
ps.executeUpdate();

不要忘记关闭PreparedStatement 的某处。

您可以再次使用PreparedStatement 检索行。

【讨论】:

    【解决方案2】:

    解决此问题的一种常见方法是使用对象/关系映射 (ORM) 框架,例如 Hibernate

    然后你可以使用注解(Hibernate注解或者JPA注解)来完成映射。对于 StackOverflow 的答案来说,完整的细节太复杂了,但对于你的例子来说,它非常简单:

    package myapp;
    
    import javax.persistence.Column;
    import javax.persistence.Entity;
    import javax.persistence.GeneratedValue;
    import javax.persistence.GenerationType;
    import javax.persistence.Id;
    import javax.persistence.Table;
    
    @Entity
    @Table(name = "car")
    public class Car {
        private Long id;
        private String brand;
        private String model;
        private Integer year;
    
        @Id
        @Column(name = "id")
        @GeneratedValue(strategy = GenerationType.AUTO)
        public Long getId() { return id; }
    
        public void setId(Long id) { this.id = id; }
    
        @Column(name = "brand")
        public String getBrand() { return brand; }
    
        public void setBrand(String brand) { this.brand = brand; }
    
        @Column(name = "model")
        public String getModel() { return model; }
    
        public void setModel(String model) { this.model = model; }
    
        @Column(name = "year")
        public Integer getYear() { return year; }
    
        public void setYear(Integer year) { this.year = year; }
    }
    

    【讨论】:

      【解决方案3】:

      您正在寻找的术语是对象关系映射Object-relational mapping (ORM 或有时称为 O/R 映射)它将您的普通旧 java 代码映射到任何 RDBMS 表。

      Hibernate 的一个例子,

      你有这个 POJO。

          @Entity
          @Table(name = "car")
          public class Car {
      
              @Id
              @Column(name = "id")
              @GeneratedValue(strategy = GenerationType.AUTO)
              private Long id;
              @Column
              private String brand;
              @Column
              private String model;
      
              public Long getId() { return id; }
      
              public void setId(Long id) { this.id = id; }
      
              public String getBrand() { return brand; }
      
              public void setBrand(String brand) { this.brand = brand; }
      
              public String getModel() { return model; }
      
              public void setModel(String model) { this.model = model; }
      
          }
      

      现在要在 Hibernate 中坚持这一点,我们所要做的就是。

      Car car = new Car();
      car.setBrand("BRAND");
      car.setModel("MODEL");
      session.save(car);
      

      请注意,我会删除一些代码以简化示例

      【讨论】:

        猜你喜欢
        • 2023-03-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-09-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多