OCP - 4

NIO.2, JDBC

NIO.2, JDBC


R. ..
This flashcard set delves into advanced Java programming concepts, focusing on file and directory management using NIO.2, JDBC database connectivity, and ResultSet handling. It covers essential methods like path manipulation, metadata retrieval, and file operations, along with JDBC connection management, statement execution, and result set navigation. Ideal for developers looking to master Java's file system and database interaction capabilities, this set provides practical insights and best practices for efficient coding.
Flashcards
66
Students
2
Language
English
Category
Computer Science
Level
Other
Created / Updated
30.04.2019 / 08.01.2020

Flashcards

What are NIO Views for?

A view is a group of realte related attributes for a particular file system.

They increase performance by reading all metadata in one operation rather than accessing the fs multiple times.

How can you read all Metadata of a Path?

BasicFileAttributes data = Files.readAttributes(path, BasicFileAttributes.class)

How can you write Metadata of a Path?

BasicFileAttributeView data = Files.getFileAttributeView(path, BasicFileAttributeView.class)

How can you travese a directory using NIO2?

Using the Files.walk(...) method which returns a Stream<Path>

What are the arguments of the Files.fild(...) method?

FIles.filnd(Path path, int maxDepth, BiPredicate<Path,BasicFileAttributes> predicate)

What does Files.list(path) return?

A stream of Paths of all the child paths of the given one

What is the difference between Files.readAllLines and Files.lines?

  • Files.readAllLines returns a List of Strings
  • Files.readLines  returns a Stream of Strings
  • The latter is usually better as it does not require the entire file to be stored in memory

Assuming the current directory is /seals/harp/food, what is the result of executing the following code?


final Path path = Paths.get(".").normalize(); // h1
int count = 0;
for(int i=0; i<path.getNameCount(); ++i) {
count++;
}
System.out.println(count);

What are the 4 Key Concepts of JDBC?

  • Driver: Knows how to get a connection to the database
  • Connection: Knows how to communicate with the database
  • Statement: Konws how to run the SQL
  • ResultSet: Knows what was returned by a SELECT Query

What is the format of a JDBC URL?

protocol:Product/Vendor Name:DatabaseSpecific Connection Details

eg. jdbc:postgres://localhost:5432/zoo

 

How can you connect to a database using JDBC?

DriverManager.getConnection("jdbc:derby:zoo")

DriverManager.getConnection("jdbc:derby:zoo", "username", "password")

How can jdbc determine which driver to use?

A driver does advertise itself via a file called java.sql.Driver in the META-INF/services directory. Otherwise, the Class.forName("fqn.of.driver") has to be used.

How can you obtain a JDBC statement?

connection.createStatement()

connection.createStatement(ResultSet.Type_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY)

What is the difference between the different ResultSet Types?

  • TYPE_FORWARD_ONLY: Usually sufficient, only next() is availbale.The view is static (new updates are not visible)
  • TYPE_SCROLL_INSENSITIVE Can scroll in any directoy,.The view is static (new updates are not visible)
  • TYPE_SCROLL_SENSITIVE: Can scroll in any directoy, the view is not static: new updates are visible. Not supported by most dirvers

What is the difference of the different result set concurrency modes?

  • CONCUR_READ_ONLY
  • CONCUR_UPDATABLE - not universally supported.

What is the difference between statment.execute() , statment.executeUpdate() and statement.executeQuery()?

  • statment.executeUpdate() - intended for DELETE, INSERT, UPDATE: Returns the number of affected rows
  • statement.executeQuery() - intended for SELECT: Returns a Result Set
  • statment.execute(): Generic: Returns true for a SELECT, otherwise false

What is the result of this code:

int result = stmt.executeUpdate("select * from animal");

An Exception is thrown: A resut was returned when none was expected

How does a Result set work?

  • It is a Cursor, meaning it points to a row (or a virtual row above/below the table)
  • navigate using next() and - if supported - previous(), absolte(), relative(), ...
  • multiple get___ Methods return the value of the column index/name in the current row

What has to be considered when working with column indices in Result Sets?

The columns are counted starting with 1 rather than 0

What happens if you don't call and check rs.next() before calling rs.get___(..)

The get___(..) method might throw an SQLException

How can you convert a java.sql.Date, java.sql.Time and java.sql.TimeStamp Object into a LocalDate/LocalTime, LocalDateTime?

Using the convenient Time.toLocalTime(), TimeStamp.toLocalDateTime(), Date.toLocalDate methods

Why do the return type of first()/last() and beforeFirst()/afterLast() differ?

The beforeFirst and afterLast do always work, making a return type redundant.

Where does the cursor point to when calling rs.absolute(0)

Same as rs.beforeFirst()

Where does the cursor point to when calling rs.absolute(-1)

To the last entyr in the table

What implicit rules corresponding to a JDBC connection, Statement and ResultSet exist?

  • Closing a Connection also closes the Statement and ResultSet
  • Closing a Statement also closes the ResultSet
  • JDBC automatically clsoes a ResultSet when you run another SQL statement from the same Statement

What is the difference between a paht.toRealPaht() and paht.toAbsolutePath()?

toAbsolutePaht does not operate on the fs ("theory") while toRealPath will resolve symbolic links . toRealPaht will throw an exceptiom if the file does not exist

Study