用NetBeans自动创建了一个数据库应用程序(一个桌面应用程序),实现基本的对表的添加、删除、修改、刷新,里面生成了三个文件,一个是GUI显示,一个是入口文件( launch(CarsApp3App.class, args))还有一个文件,我推测是有关数据库的,但是看不太明白。各位能否帮忙看看,大致解释一下?
------------------------------------------
我不明白的有如下几点:
1、@Entity,@Table之类语句的前面的@是什么意思?2、从NetBeans里面的 服务->数据库->新建连接 可以直接创建与sql server2000的连接,但我在自动生成的3个文件中,并没有找到诸如以下基本步骤请问各位高人,创建一个这样的应用程序,大概的结构是什么?
------------------------------------------基本步骤:
//1、加载jdbc数据库驱动
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
System.out.println("数据库驱动程序注册成功!"); //jdbc连接URL
String url = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=test";
String user = "sa";//用户名
String password = "sa";//密码 //2、取得连接
Connection conn = DriverManager.getConnection(url, user, password);
System.out.println("数据库连接成功");
//3、表示预编译的 SQL 语句的对象
PreparedStatement ps = conn.prepareStatement("select * from test_tab");
//或者用于执行静态 SQL 语句并返回它所生成结果的对象
//Statement s = conn.createStatement();
//4、执行查询
ResultSet rs = ps.executeQuery();
//rs.getMetaData().getColumnType(1);     //或执行更新、插入、删除
//ps.executeUpdate(); //5、处理结果集
while(rs.next())
System.out.println("id: " + rs.getInt(1) + "  test_d: " + rs.getString(2)); //6、关闭连接释放资源
rs.close();
ps.close();
conn.close();
-------------------------------------------看不懂的代码如下:
package carsapp3;import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;
import java.io.Serializable;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
import javax.persistence.Transient;@Entity
@Table(name = "CAR", catalog = "test", schema = "dbo")
@NamedQueries({@NamedQuery(name = "Car.findAll", query = "SELECT c FROM Car c"), @NamedQuery(name = "Car.findByMake", query = "SELECT c FROM Car c WHERE c.make = :make"), @NamedQuery(name = "Car.findByModel", query = "SELECT c FROM Car c WHERE c.model = :model"), @NamedQuery(name = "Car.findByPrice", query = "SELECT c FROM Car c WHERE c.price = :price"), @NamedQuery(name = "Car.findByBodyStyle", query = "SELECT c FROM Car c WHERE c.bodyStyle = :bodyStyle"), @NamedQuery(name = "Car.findByColor", query = "SELECT c FROM Car c WHERE c.color = :color"), @NamedQuery(name = "Car.findBySunRoof", query = "SELECT c FROM Car c WHERE c.sunRoof = :sunRoof"), @NamedQuery(name = "Car.findBySpoiler", query = "SELECT c FROM Car c WHERE c.spoiler = :spoiler"), @NamedQuery(name = "Car.findByTireSize", query = "SELECT c FROM Car c WHERE c.tireSize = :tireSize"), @NamedQuery(name = "Car.findByTireType", query = "SELECT c FROM Car c WHERE c.tireType = :tireType"), @NamedQuery(name = "Car.findByModernness", query = "SELECT c FROM Car c WHERE c.modernness = :modernness")})
public class Car implements Serializable {
    @Transient
    private PropertyChangeSupport changeSupport = new PropertyChangeSupport(this);
    private static final long serialVersionUID = 1L;
    @Id
    @Basic(optional = false)
    @Column(name = "MAKE")
    private String make;
    @Column(name = "MODEL")
    private String model;
    @Column(name = "PRICE")
    private Integer price;
    @Column(name = "BODY_STYLE")
    private String bodyStyle;
    @Column(name = "COLOR")
    private String color;
    @Column(name = "SUN_ROOF")
    private Integer sunRoof;
    @Column(name = "SPOILER")
    private Integer spoiler;
    @Column(name = "TIRE_SIZE")
    private Integer tireSize;
    @Column(name = "TIRE_TYPE")
    private Integer tireType;
    @Column(name = "MODERNNESS")
    private Integer modernness;    public Car() {
    }    public Car(String make) {
        this.make = make;
    }    public String getMake() {
        return make;
    }    public void setMake(String make) {
        String oldMake = this.make;
        this.make = make;
        changeSupport.firePropertyChange("make", oldMake, make);
    }    public String getModel() {
        return model;
    }    public void setModel(String model) {
        String oldModel = this.model;
        this.model = model;
        changeSupport.firePropertyChange("model", oldModel, model);
    }    public Integer getPrice() {
        return price;
    }    public void setPrice(Integer price) {
        Integer oldPrice = this.price;
        this.price = price;
        changeSupport.firePropertyChange("price", oldPrice, price);
    }    public String getBodyStyle() {
        return bodyStyle;
    }    public void setBodyStyle(String bodyStyle) {
        String oldBodyStyle = this.bodyStyle;
        this.bodyStyle = bodyStyle;
        changeSupport.firePropertyChange("bodyStyle", oldBodyStyle, bodyStyle);
    }    public String getColor() {
        return color;
    }    public void setColor(String color) {
        String oldColor = this.color;
        this.color = color;
        changeSupport.firePropertyChange("color", oldColor, color);
    }    public Integer getSunRoof() {
        return sunRoof;
    }    public void setSunRoof(Integer sunRoof) {
        Integer oldSunRoof = this.sunRoof;
        this.sunRoof = sunRoof;
        changeSupport.firePropertyChange("sunRoof", oldSunRoof, sunRoof);
    }    public Integer getSpoiler() {
        return spoiler;
    }    public void setSpoiler(Integer spoiler) {
        Integer oldSpoiler = this.spoiler;
        this.spoiler = spoiler;
        changeSupport.firePropertyChange("spoiler", oldSpoiler, spoiler);
    }    public Integer getTireSize() {
        return tireSize;
    }    public void setTireSize(Integer tireSize) {
        Integer oldTireSize = this.tireSize;
        this.tireSize = tireSize;
        changeSupport.firePropertyChange("tireSize", oldTireSize, tireSize);
    }    public Integer getTireType() {
        return tireType;
    }    public void setTireType(Integer tireType) {
        Integer oldTireType = this.tireType;
        this.tireType = tireType;
        changeSupport.firePropertyChange("tireType", oldTireType, tireType);
    }    public Integer getModernness() {
        return modernness;
    }    public void setModernness(Integer modernness) {
        Integer oldModernness = this.modernness;
        this.modernness = modernness;
        changeSupport.firePropertyChange("modernness", oldModernness, modernness);
    }    @Override
    public int hashCode() {
        int hash = 0;
        hash += (make != null ? make.hashCode() : 0);
        return hash;
    }    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Car)) {
            return false;
        }
        Car other = (Car) object;
        if ((this.make == null && other.make != null) || (this.make != null && !this.make.equals(other.make))) {
            return false;
        }
        return true;
    }    @Override
    public String toString() {
        return "carsapp3.Car[make=" + make + "]";
    }    public void addPropertyChangeListener(PropertyChangeListener listener) {
        changeSupport.addPropertyChangeListener(listener);
    }    public void removePropertyChangeListener(PropertyChangeListener listener) {
        changeSupport.removePropertyChangeListener(listener);
    }}

解决方案 »

  1.   

    1、@Entity,@Table之类语句的前面的@是什么意思?这个是JAVA的Annotation,LZ可以去网上查一下原理。
    2、从NetBeans里面的 服务->数据库->新建连接 可以直接创建与sql server2000的连接,但我在自动生成的3个文件中,并没有找到诸如以下基本步骤

    自动生成当然会缺少一些东西,需要自己去写或配置。
      

  2.   

    @是java的annotation注释
    相当于 hibernate里面的实体类的*.hbm.xml文件
    @Entity 
    @Table(name = "CAR", catalog = "test", schema = "dbo") 
    比如说上面那一段:表明该类Car是一个实体类
    该类在数据库中对应的表名为“CAR”,用户为“dbo”等