用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、@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);
}}
2、从NetBeans里面的 服务->数据库->新建连接 可以直接创建与sql server2000的连接,但我在自动生成的3个文件中,并没有找到诸如以下基本步骤
自动生成当然会缺少一些东西,需要自己去写或配置。
相当于 hibernate里面的实体类的*.hbm.xml文件
@Entity
@Table(name = "CAR", catalog = "test", schema = "dbo")
比如说上面那一段:表明该类Car是一个实体类
该类在数据库中对应的表名为“CAR”,用户为“dbo”等